Этот вопрос для меня вызов, мой друг не может сказать мне, как это сделать, но он действительно хороший программист (я думаю).
Пользователи могут помещать в базу данных предложения. Когда пользователь вводит предложение, оно сохраняется в таблице sentences
. Далее предложение разбивается на слова, каждый саундекс слова сохраняется в таблице tags
с идентификатором разбитого предложения.
Наконец, каждый саундакс слова помещается в таблицу weights
, если уже есть такой же саундекс, функция добавляет 1 к counter
этого саундекса.
(Для тех, кто не знает: soundex — это функция, которая возвращает фонетическое представление (как оно звучит) строки)
Структура базы данных: Одна таблица sentences
содержит две строки: id
и sentence
. Другая таблица tags
содержит id
(с идентификатором предложения) и tag
(с одним словом из предложения). tag
на самом деле не просто слово, а звуковое выражение этого слова. Последняя таблица weights
содержит tag
и weight
(число указывает нам, сколько таких тегов в таблице tags
)
Мой вопрос: как я могу заставить функцию ведьмы возвращать похожие предложения на заданную строку. Он должен использовать теги (soundex of word), и каждый тег должен иметь свою мощность, основанную на таблице weights
. Теги, которые часто используются, важнее, чем более оригинальные теги. Можно ли это сделать всего за один запрос mysql?
Следующий вопрос: Я думаю, что этот способ поиска похожих предложений хорош, но что со скоростью этой функции? Мне нужно очень часто использовать его на моем сайте.