Свободный подход к поиску
Я хочу сделать поиск для своего сайта, и для удовольствия я решил, что я должен хотя бы попытаться сделать это сам (в случае неудачи всегда есть пользовательский поиск Google).
Проблема в том, что я даже не знаю, как подойти к этому монстру! Вот требования:
- При поиске потребуются не все ключевые слова (если искать "Большой счастливый мир", он также ищет "Большой мир", "Счастливый мир" и т. Д.)
- Распространенные ошибки в правописании (из базы данных, с помощью разницы в редактировании или предопределенного списка распространенных ошибок (вместо =>, а не и т. Д.).
- Поиск по содержанию и заголовкам сообщений, с упором на заголовки.
- Не соси
Я искал своего старого приятеля в Google, но единственные разумные вещи, которые я нашел, были документы академического уровня по этому вопросу (английский не мой родной, я хороший, но не очень хороший =().
Итак, вкратце: кто-нибудь знает хорошее место для начала, учебник, статью, пример?
Заранее спасибо.
2 ответа
Если вы хотите создать свою собственную поисковую систему, apache lucene - это зрелая библиотека с открытым исходным кодом, которая может позаботиться о значительной части функциональности за вас.
Используя lucene, вы сначала индексируете свою информацию [используя IndexWriter ]. Это делается в автономном режиме, чтобы создать индекс.
При поиске - вы используете IndexSearcher для поиска документов, соответствующих вашему запросу.
Если вы хотите получить некоторые теоретические знания о том, "как это работает", вам следует прочитать больше о поиске информации. Хорошее место для начала - знакомство Стэнфорда с поиском информации.
Есть несколько вариантов, которые вы можете попробовать:
- Apache Lucene (в Zend Framework существует реализация на основе PHP)
- ElasticSearch (предоставляет REST-подобный API поверх Lucene)
- Xapian
- сфинкс
Вероятно, куча других тоже.