@barolina
turn coffee into code

Почему-то ранжирование с точным совпадением в словах с дефисом — не коректное?

у меня есть запрос
select * from appl_index() where MATCH('Синее, яблоко') OPTION ranker=expr('sum(lcs*user_weight)*1000+bm25');


если в базе есть слова с дефисом, то результат такого запроса след
Синее, яблоко-дерево 1
Синее, яблоко-дерево 4
Синее, яблоко-дерево 3
Синее, яблоко

хотелось видеть наоборот
Синее, яблоко
Синее, яблоко-дерево 1
Синее, яблоко-дерево 3
Синее, яблоко-дерево 4


если в базе нет слов с дефисом, то результате, вроде все верно, первыми идут результаты с точным совпадением

Настройки индекса след:
index_exact_words =1
min_stemming_len = 3
min_word_len = 3
min_prefix_len = 3
expand_keywords = 1
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 1
tumbler
@tumbler
бекенд-разработчик на python
  1. Добавьте сниппеты чтобы понять, что именно сматчилось
  2. ranker=export() чтобы посмотреть, что там насчитал sphinx по показателям
  3. lcs не учитывает расстояние между сматчившимися словами, только порядок. Посмотрите на [w]lccs
  4. Добавьте в ранкер abs(query_word_count - doc_word_count), тогда впереди будут идти результаты в которых столько же слов сколько в запросе)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы