@EASemashko

Почему использование min_hit_pos в ранжировании не дает нужного результата в sphinx?

Использую ранжирование по выражению
$sphinx->SetMatchMode(SPH_MATCH_EXTENDED2);
$sphinx->SetFieldWeights(array('name'      => 100,  'valAuthor' => 20));
$sphinx->SetRankingMode(SPH_RANK_EXPR, "sum((1/(min_hit_pos)+user_weight*IF(exact_hit==1,5000*doc_word_count, 4000*doc_word_count))");
$sphinx->SetSortMode(SPH_SORT_EXPR, "IF(qty, 1, 0.1)*@weight");


При этом индексируются три поля: name, valAuthor, qty, где, соответственно, имя, автор, количество книг.
При этом, например, если я ввожу "рим", то
"Криминалистика" ранжируется выше, чем "Рим: путеводитель".
Если посчитать логику, то получается:
криминалистика: 0,25 + 100*4000*1 + 20*0 = 400000,25
рим: путеводитель: 1+100*4000*1+20*0 = 400001
qty и там, и там больше 0.
При этом я понимаю, что Рим: путеводитель должен ранжироваться выше, однако этого не происходит.
Поправьте, где я косячу?
  • Вопрос задан
  • 458 просмотров
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
Уберите ваше ранжирование и поищите Рим а потом уже поэтапно добавляйте ваше ранжирование
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы