Советы по поиску с помощью PHP и MySQL - PullRequest
2 голосов
/ 27 сентября 2010

По сути, у меня та же проблема, что и у этого парня, но мне также нужна релевантность: Умный поисковый движок PHP для поиска советов по таблицам Mysql

Но я не могу использовать Sphinxили Lucene (виртуальный хостинг) ...

Я могу использовать LIKE, но это не имеет значения, поэтому кто-нибудь знает хороший класс PHP, который создает релевантность?

Так что мне нужно что-то, что подходит для этогоbill:

  • Значение релевантности результата
  • Соответствует части слов, например "LIKE% searchterm%"
  • Поиск в нескольких столбцах базы данных
  • Может 'я не могу использовать такие вещи, как Sphinx или Lucene, но не поддерживается моим общим хостингом ...

Я использую платформу CakePHP.

Ответы [ 3 ]

4 голосов
/ 27 сентября 2010

Вас может заинтересовать моя презентация Практический полнотекстовый поиск в MySQL .

Я сравниваю производительность нескольких решений:

  • LIKE предикаты
  • MyISAM FULLTEXT индексы
  • Поиск сфинкса
  • Lucene (или Solr)
  • Система пользовательского поиска Google
  • Инвертированные индексы

Если у вас нет возможности установить выделенную поисковую систему, я бы рекомендовал использоватьFULLTEXT или Google CSE.

Использование предикатов LIKE, безусловно, является наихудшим выбором.


Я пробовал Zend_Search_Lucene, клон Apache Lucene на чистом PHP, но версия PHP слишком медленная виндексации.См. Мой ответ на Могу ли я предсказать, насколько большим будет мой индекс Zend Framework?(и некоторые быстрые вопросы:)

Zend_Search_Lucene также не поддерживает совместимость с новыми версиями формата индексного файла Apache Lucene.См. Совместное использование портов Solr и Zends Lucene…

1 голос
/ 27 сентября 2010

Zend_Search_Lucene - это реализация Lucene на чистом PHP.Я использую его на веб-сайте общего хостинга, который я запускаю.

0 голосов
/ 29 сентября 2010

В итоге я использовал полнотекстовый поиск mysql в логическом режиме.Я также добавляю операторы * к каждому поисковому запросу.

пользовательский ввод: Том Джонс

результирующий запрос: совпадение (имя, описание) с ('tom* Джонс * в булевом режиме ');

Спасибо за помощь всем.

...