#php #mysql
#php #mysql
Вопрос:
Мне нужно сопоставить строку со строками в столбце таблицы mysql, мне нужно выбрать строки, совпадение которых превышает 80%. есть ли какая-либо функция в mysql, которая сделает это?
например, строка «цитировать путем размещения» соответствует более чем на 80% строке «цитировать по месту». Вот так я фильтрую.
Спасибо!
Комментарии:
1. У вас есть особая причина для «80%»? можете ли вы рассказать нам о том, что вы делаете
Ответ №1:
ПОЛНОТЕКСТОВЫЙ поиск, вероятно, был бы лучшим подходом к тому, что вы делаете. В противном случае нет необходимости выбирать произвольный%.
Если вы выполняете более интенсивный поиск, ознакомьтесь с некоторыми движками, такими как Sphinx
Комментарии:
1. я думаю, что лучший способ — использовать ‘like’ и соответствовать 80% результату, который я получаю. правильно ли это.
2. Использование функции similar_text ($ str1, $ str2, $ match) в результатах поиска даст некоторый оптимальный результат, который я хотел, правильно?
3. Да, вы можете использовать подобные функции PHP для анализа ваших результатов на предмет точного% соответствия
Ответ №2:
попробуйте вырезать 20% строки в php, а затем использовать like
для 80% вашей строки и всех строк для сравнения
Комментарии:
1. Возможно, я ошибаюсь, но я думаю, что он хочет, чтобы 80% отображалось где угодно, а не только в начале. Таким образом, сокращение будет сравнивать только определенные 80%, которые вы выбираете
2. @babonk да, я просто хочу сопоставить 80% в любом месте строки, а не в начале
3. о, итак, я прошу прощения за неправильное понимание вопроса
4. @banonk я хочу, чтобы некоторые параметры были выбраны по умолчанию на основе этого соответствия.
Ответ №3:
Вы могли бы попробовать взглянуть на функцию MYSQL soundex, которая может дать вам то, что вам нужно
Ответ №4:
Насколько я понимаю ваши критерии, вы хотите нечеткий поиск. Это не реализовано в MySQL. Вам нужно будет найти способ экстернализировать проверку для этого.