Лучший способ создать поисковую систему SMART mySQL & PHP? - PullRequest
14 голосов
/ 10 января 2011

Каков наилучший способ создания поиска для MySQL и PHP?

В настоящее время я использую такие вещи, как

% term%

Iхотите, чтобы он мог найти результат, даже если они пишут его немного неправильно, например:

Значение поля = "One: Stop Shop:

Они ищут:

Одна остановка магазина

ИЛИ

Одна остановка магазина

И т. Д. Я хочу действительно умный поиск, чтобы они находили информацию, даже если они не ищут точную вещь.

Каков наилучший способ создания интеллектуального поиска, подобного этому?

Ответы [ 4 ]

6 голосов
/ 10 января 2011

like '%term%' ужасно медленный и неоптимизированный, вы можете добавить полнотекст для этого столбца, а использовать логический режим для этого

Например

match(column) against('+One +Shop +Stop' in boolean mode)

Обратите внимание, что минимальная длина слова равна 4, поэтому вам нужно поменять ее на три, и полнотекстовый поиск доступен только для myisam

Другая поисковая система с открытым исходным кодом, такая как sphinx идеально подходит для этого тоже

5 голосов
/ 24 сентября 2013

AJreal прав ... просто подумал, что добавлю пример, чтобы помочь:

 $query = sprintf("SELECT *, "
                    . " MATCH(data) AGAINST('%s' IN BOOLEAN MODE) AS relevance "
                    . " FROM table_name"
                    . " ORDER BY relevance DESC LIMIT 20 ",

Надеюсь, это поможет

5 голосов
/ 10 января 2011

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

Итак, шаг 1 - индексация.Если ваши данные находятся на некоторых веб-страницах, вы можете использовать стандартные доступные сканеры (или даже легко создать свой собственный сканер, я бы предложил python для сборки сканера).Если ваши данные находятся в каком-то файле (не доступны для просмотра в Интернете), то для индексации вам необходимо написать программу для чтения всех данных и их индексации.

Шаг 2 - поиск.Подход поиска зависит от стратегии индексации.

Если вы ищете систему на основе php-mysql, просмотрите коды этих проектов:

http://www.phpdig.net/

http://sphinxsearch.com/

Если выХотите узнать больше, ищите в архивах публикаций IEEE Xplore / ACM.Вы получите много публикаций на эту тему.

2 голосов
/ 01 марта 2013

Вы можете использовать функцию SOUNDEX (), она доступна как на PHP, так и на MYSQL. SOUNDEX () с MYSQL

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