Поиск в mysqldb с php - PullRequest
       13

Поиск в mysqldb с php

2 голосов
/ 09 декабря 2008

Как реализовать отличный поиск в mysqldb - в таблице если я буду искать с помощью '... LIke% bla% ....', не все записи будут найдены - например, в слове bla. поиск с soundex был бы хорош - но если я читаю руководство, я должен создать soundex-index для поиска soundex-значений?

Так что вопрос в том, что является «наилучшей практикой» для написания хорошего db-поиска для ключевого слова в простом столбце «заголовок» или в другом месте.

прощай

Ответы [ 2 ]

2 голосов
/ 09 ноября 2009

Если вы не собираетесь устанавливать и использовать Sphinx, то вы можете попробовать использовать некоторые из встроенных в MySQL функций полнотекстового поиска, таких как «MATCH»

Это позволяет выполнять полнотекстовый поиск и даже ранжировать результаты по значению релевантности. Вы можете написать запрос, как:

SELECT id, col1, col2, MATCH(col1, col2) AGAINST('some text' IN NATURAL LANGUAGE MODE) AS relevance FROM table1;

Вы даже можете использовать расширение запроса, чтобы подобрать другие тесно связанные термины. Например, если пользователь ищет «базу данных», а самые релевантные результаты содержат «mysql», то mysql также будет искать «mysql», поскольку определил, что термин «mysql» тесно связан с «базой данных». термин, который искал пользователь.

http://dev.mysql.com/doc/refman/5.1/en/fulltext-query-expansion.html

2 голосов
/ 09 декабря 2008

Для текстового поиска у вас есть две опции, кроме использования предложения LIKE - FULLTEXT index (что означает использование MyISAM) или использования специальных механизмов индексации, таких как Lucene или Sphinx .

Лично я бы порекомендовал использовать Sphinx, он отлично интегрируется как с MySQL, так и с PHP и очень быстр для текстового поиска (и других запросов).

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