Свободный подход к поиску

Я хочу сделать поиск для своего сайта, и для удовольствия я решил, что я должен хотя бы попытаться сделать это сам (в случае неудачи всегда есть пользовательский поиск Google).

Проблема в том, что я даже не знаю, как подойти к этому монстру! Вот требования:

  • При поиске потребуются не все ключевые слова (если искать "Большой счастливый мир", он также ищет "Большой мир", "Счастливый мир" и т. Д.)
  • Распространенные ошибки в правописании (из базы данных, с помощью разницы в редактировании или предопределенного списка распространенных ошибок (вместо =>, а не и т. Д.).
  • Поиск по содержанию и заголовкам сообщений, с упором на заголовки.
  • Не соси

Я искал своего старого приятеля в Google, но единственные разумные вещи, которые я нашел, были документы академического уровня по этому вопросу (английский не мой родной, я хороший, но не очень хороший =().

Итак, вкратце: кто-нибудь знает хорошее место для начала, учебник, статью, пример?

Заранее спасибо.

2 ответа

Решение

Если вы хотите создать свою собственную поисковую систему, apache lucene - это зрелая библиотека с открытым исходным кодом, которая может позаботиться о значительной части функциональности за вас.

Используя lucene, вы сначала индексируете свою информацию [используя IndexWriter ]. Это делается в автономном режиме, чтобы создать индекс.
При поиске - вы используете IndexSearcher для поиска документов, соответствующих вашему запросу.

Если вы хотите получить некоторые теоретические знания о том, "как это работает", вам следует прочитать больше о поиске информации. Хорошее место для начала - знакомство Стэнфорда с поиском информации.

Есть несколько вариантов, которые вы можете попробовать:

  • Apache Lucene (в Zend Framework существует реализация на основе PHP)
  • ElasticSearch (предоставляет REST-подобный API поверх Lucene)
  • Xapian
  • сфинкс

Вероятно, куча других тоже.

Другие вопросы по тегам