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

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

5
Jeyanth Kumar 27 Авг 2011 в 15:13

3 ответа

Лучший ответ

Вы можете использовать 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 и вставлено в таблицу с остальными пользовательскими параметрами.

9
Philippe Plantier 27 Авг 2011 в 12:03

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

2
Wesley van Opdorp 27 Авг 2011 в 11:31

Может быть, создать базу данных наиболее употребительных слов (например: собака, дом, город, числа, вода, интернет). Не нужно делать его большим (<10000 слов). Затем, когда вы расширяете поисковый запрос, проверьте базу данных "слов" на слова, КАК условия поиска. Тогда просто повторяйте предложения.

0
Akos 27 Авг 2011 в 11:23