Функция поиска PHP, для поиска БД с точным поисковым термином [дубликат]

просто передайте весь код в качестве аргумента timeit:

import timeit

print(timeit.timeit("""

limit = 10000
prime_list = [i for i in range(2, limit+1)]

for prime in prime_list:
    for elem in range(prime*2, max(prime_list)+1, prime):
        if elem in prime_list:
            prime_list.remove(elem)"""

, number=10))
1
задан Name 4 February 2016 в 22:34
поделиться

3 ответа

Есть функция, которая грубо хочет, которую вы хотите, но она интенсивна и замедляет запросы. Возможно, вы сможете использовать его в своих обстоятельствах, я использовал его раньше. Это называется Левенштейн. Вы можете получить его здесь Как добавить функцию levenshtein в mysql?

2
ответ дан Community 18 August 2018 в 17:03
поделиться
  • 1
    спасибо, он отлично работает! – Name 4 February 2016 в 22:46
  • 2
    О, круто. Помните о медлительности, которую вы можете получить по более крупным запросам. И, пожалуйста, примите мой ответ, если вам это нравится. Благодарю. – Pete 4 February 2016 в 22:49

То, что вы хотите сделать, называется нечетким поиском. Вы можете использовать функцию SOUNDEX в MySQL, зарегистрированную здесь:

http://dev.mysql.com/doc/refman/5.7/ru/string-functions.html#function_soundex

Запрос будет выглядеть так:

SELECT * FROM dictionary, где SOUNDEX (word) = SOUNDEX (: yourSearchTerm)

... где ваш поисковый запрос связан с: значением параметра yourSearchTerm.

Следующим шагом будет попытка реализовать и использовать функцию Levenshtein в MySQL. Один из них описан здесь:

http://www.artfulsoftware.com/infotree/qrytip.php?id=552

Левенштейн расстояние между двумя строками - это минимальное количество операций, необходимых для преобразования одной строки в другую, где операция может быть вставкой, удалением или заменой одного символа.

Вы также можете рассмотреть возможность поиска базы данных, предназначенные для полного поиска текста, такие как Elastic Search, который обеспечивает это изначально:

https://www.elastic.co/guide/en/elasticsearch/reference/current/query -dsl-нечеткой query.html

1
ответ дан mmccaff 18 August 2018 в 17:03
поделиться
  • 1
    Мне не нравится downvote, но вы получите голоса за эту строку "code & quot; из-за не дезинфекции входящего текста. – Pete 4 February 2016 в 22:51
  • 2
    Я думал то же самое - я быстро писал псевдокод, чтобы проиллюстрировать общую идею. Я отредактировал его, чтобы предложить использовать привязку параметров. – mmccaff 4 February 2016 в 22:52

вы можете использовать функцию soundex () для сравнения фонетически

, ваш запрос должен выглядеть примерно так:

select * from table where soundex(word) like soundex('helo');

, и это вернет вам hello строка

3
ответ дан Nir Levy 18 August 2018 в 17:03
поделиться
  • 1
    Хороший. Никогда не слышал об этом раньше. Это не решит все проблемы, связанные с опросом, но я все равно голосую :) – Pete 4 February 2016 в 22:48
Другие вопросы по тегам:

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