PHP MySQL Search Предложения - PullRequest
       13

PHP MySQL Search Предложения

5 голосов
/ 27 августа 2011

В моем веб-приложении будет несколько пользователей. и они имеют свое собственное содержимое, загруженное в мое веб-приложение. Для каждого загружаемого контента есть заголовок, описание и теги (ключевые слова). Я могу написать поисковый скрипт для поиска контента или имени пользователя. но они вводят ключевые слова, когда они дали с орфографической ошибкой, это не возвращает никакого результата. Например, если в базе данных есть пользователь с именем «Michael» и поисковый запрос был «Micheal», я должен получить «Вы имели в виду поиск« Michael »», который является ничем иным, как поисковым предложением.

Также это предложение должно относиться к содержимому, загруженному пользователем. Пользователь может сохранить заголовок своего контента как «Действия Майкла в мае 2011 года», и должны быть сгенерированы предложения для отдельных слов.

Ответы [ 3 ]

8 голосов
/ 27 августа 2011

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

SELECT * FROM users WHERE SOUNDEX(name) = SOUNDEX(:input)

или подобного

SELECT * FROM users WHERE name SOUNDS_LIKE :input

(что полностью эквивалентно)

Редактировать: если вам нужно использовать алгоритм, отличный от Soundex, как предложил Мартин Хоенберг, вам нужно добавить дополнительный столбец в вашу таблицу, который называется, например, sound_equivalent.(На самом деле это более эффективное решение, поскольку этот столбец может быть проиндексирован).Тогда запрос будет:

SELECT * FROM users WHERE sound_equivalent = :input_sound_equivalent

Содержимое столбца sound_equivalent может быть сгенерировано с помощью алгоритма PHP и вставлено в таблицу с остальными пользовательскими параметрами.

2 голосов
/ 27 августа 2011

Вы также можете использовать библиотеку php pspell , чтобы получать предложения, если у вас нет результатов поиска.

0 голосов
/ 27 августа 2011

Возможно создать базу данных самых распространенных слов (например: собака, дом, город, цифры, вода, интернет). Не нужно делать это большим (<10000 слов). Затем, когда вы разберетесь в поисковом запросе, проверьте в словарной базе данных слова, как ИСКЛ. Тогда просто подтвердите предложения. </p>

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