MySQL Нечеткий поиск по всем полям для автозаполнения [дубликат]

Это связано с изменением того, как сложные переменные разрешены в PHP 5 vs. 7. См. раздел об изменениях в обработке переменных здесь: http://php.net/manual/en/migration70.incompatible. php

Разница заключается в том, что выражение:

$this->links->$data[$te]['attributes']['ID']

оценивается как это в PHP 5:

$this->links->{$data[$te]['attributes']['ID']}

и так в PHP 7:

($this->links->$data)[$te]['attributes']['ID']

См. https://3v4l.org/gB0rQ для примера вырезания.

Вам нужно будет измените свой код, чтобы он был явным, либо с помощью {}, либо, разбив его на две строки. В этом случае, когда у вас есть код, который отлично работает в PHP 5, выберите первый, поскольку это будет означать, что поведение остается неизменным во всех версиях PHP.

13
задан Mat 29 April 2012 в 19:32
поделиться

4 ответа

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

Например, как

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

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

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

6
ответ дан ajreal 27 August 2018 в 01:41
поделиться

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

2
ответ дан Richard 27 August 2018 в 01:41
поделиться

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

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

Шаг 2 выполняет поиск. Поисковый подход зависит от стратегии индексирования.

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

http://www.phpdig.net/

http://sphinxsearch.com/

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

5
ответ дан Sarwar Erfan 27 August 2018 в 01:41
поделиться

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

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

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

5
ответ дан timpng1 27 August 2018 в 01:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: