Я хотел бы выполнить полнотекстовый поиск по столбцу, ища частичное совпадение слов (IE: against('fra*' in boolean mode)
). Но я хотел бы получить результаты, которые присваивают более высокую релевантность более коротким словам, которые соответствуют.
Итак, например, если я выполняю поиск "fra" и получаю результаты "откровенный" , "fran" и "frankfurter", я бы хотел, чтобы они были упорядочены с точки зрения релевантности следующим образом: "fran", "откровенный" , "откровенный" .
Возможно ли, что это может быть достигнуто?
SELECT
token FROM tokentable
WHERE token LIKE '%fra'
ORDER BY CHAR_LENGTH(token) ASC
чтобы заполнить ваш пример, очень быстро, а также из-за индексации btree. вы также можете сделать:
SELECT
document FROM documents
WHERE document LIKE '%frankfurter%'
AND document LIKE '%würstel%'
ORDER BY CHAR_LENGTH(document) ASC
но это, вероятно, бессмыслица расчета релевантности.
простой ответ: если вы только выполняете автосуществование на основе префикса, метод выше - это хорошо. theres нет необходимости использовать матч против. если вы хотите искать полнотекстовый поиск, вы не можете сделать это с такими критериями, вы должны посмотреть на lucene/solr