Свободный подход к поиску - PullRequest
3 голосов
/ 16 февраля 2012

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

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

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 16 февраля 2012

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

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

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

2 голосов
/ 16 февраля 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...