Как «переопределить поиск» или исправить «ошибки» из базы данных

StackOverflow https://stackoverflow.com/questions/2788192

  •  04-10-2019
  •  | 
  •  

Вопрос

Я хочу добавить новую функцию в поиск на моем сайте. Я использую PHP и MySQL. База данных MySQL, содержащая таблицу на элементы, которые пользователь ищет, для каждого элемента есть «ключевое слово» столбца, которая запятая ключевые слова «Пример: кошка, собака, лошадь». После поиска пользователей на моем сайте я хочу получить слова, которые позволяют мне сказать «85%», аналогично его ключевому слову поиска, это для переопределения поиска. И для Messpelling я хочу услугу или что-то, что предусматривает, если ключевое слово правильное или ошибка, поэтому я получаю некоторые исправления и проверяю, если эти существуют в базе данных, а затем дают эти исправления пользователю, чтобы изменить его ключевое слово поиска.

Я не спрашиваю на решение здесь ... но если вы можете направить меня так или иначе, это будет здорово

Спасибо, парни

Ваше здоровье

Это было полезно?

Решение

Ключ в вашей идее «85% подобных». Вот некоторые идеи:

Похожие слова таблица

Вы можете определить таблицу, где вы перечислите общие разметки для своих ключевых слов. Затем вам придется увеличить, как вы ищете в базе данных, чтобы сопоставить общие разметки в правильное значение.

Подобные слова поиска

Когда вы выполняете поиск, используйте библиотеку для создания похожих слов и поиск всех них. Вы можете использовать любую систему орфографической библиотеки для создания возможных совпадений Word, прежде чем отправлять поиск. Или напишите свой собственный на основе Расстояние редактирования алгоритм.

Только проверьте, если это необходимо:Поскольку вы используете PHP, вы можете рассмотреть PSPELL. Вы можете сначала позвонить pspell_check Чтобы увидеть, правильно ли слово написано правильно. Тогда звоните pspell_suggest чтобы получить предложения.

Смотрите эту ссылку для примера.

Используйте функцию базы данных

MySQL, например, имеет SOUNDS_LIKE оператор. Вы можете искать WHERE keyword SOUNDS_LIKE 'kat' и (предположительно) получить cat. Больше информации на странице документации, который предупреждает вас до некоторых ограничений (например, английский и UTF-8).


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

Первые два должны позволить вам удовлетворить некоторое представление о сходстве на 85%. Я понятия не имею, насколько хорошо будет работать третий вариант, но это «Soundz Kool».

Другие советы

Есть аналогичный_Text () в PHP, но это после запроса; Вы также можете проверить полнотекстовый поиск в MySQL.

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

Расстояние редактирования

Apache Solr - это платформа поиска с открытым исходным кодом, которая обеспечивает не только полнотекстовые возможности поиска, но и со встроенными сопоставленными баллами и системами автоподветия, среди многих других Мощные особенности.

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

Связь между вашим приложением и SOLR может быть обработано через стандартный интерфейс отдыха. AFAIK Есть две хорошие библиотеки PHP, специфичные Solr доступны в данный момент:

Настройка сервера довольно прямо вперед, будучи кропоткой частью (а также интересной) настройкой и оптимизации Solr, чтобы наилучшим образом соответствовать вашим потребностям.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top