Я столкнулся со странной weight
проблемой со Сфинксом.При выполнении полного текста только на name
результаты взвешиваются точно.Но когда он расширен с поиском по address
, вычисленный вес неверен.
Я использую Sphinx 2.2.11
Пример 1: Поиск по имени дает правильное значениерезультаты
$cl->SetRankingMode(SPH_RANK_SPH04);
$cl->SetSortMode(SPH_SORT_EXTENDED, '@weight desc');
$cl->SetMatchMode(SPH_MATCH_EXTENDED2);
$res = $cl->Query('@name ("la" | "comedie" | "saint" | "michel")', 'idx_name');
Вывод
Venue Name Address Weight
La Comédie Saint-Michel boulevard Saint-Michel 19620
La Comédie Saint-Michel - Small Hall boulevard Saint-Michel 18649
La Comédie Saint-Michel - Grande Salle boulevard Saint-Michel 18649
Соответствующие слова
[words] => Array
(
[la] => Array
(
[docs] => 26110
[hits] => 29358
)
[comedie] => Array
(
[docs] => 89
[hits] => 96
)
[saint] => Array
(
[docs] => 8820
[hits] => 10171
)
[michel] => Array
(
[docs] => 314
[hits] => 353
)
)
Пример 2: Поиск по имени и адресу получает неправильный вес
$cl->SetRankingMode(SPH_RANK_SPH04);
$cl->SetSortMode(SPH_SORT_EXTENDED, '@weight desc');
$cl->SetMatchMode(SPH_MATCH_EXTENDED2);
$res = $cl->Query('@name ("la" | "comedie" | "saint" | "michel")
@address ("boulevard" | "saint" | "michel")', 'idx_name');
Вывод
Venue Name Address Weight
La Comédie Saint-Michel - Small Hall boulevard Saint-Michel 32631
La Comédie Saint-Michel - Grande Salle boulevard Saint-Michel 32631
La Comédie Saint-Michel boulevard Saint-Michel 32608
Слова для соответствия
[words] => Array
(
[la] => Array
(
[docs] => 26110
[hits] => 29358
)
[comedie] => Array
(
[docs] => 89
[hits] => 96
)
[saint] => Array
(
[docs] => 8820
[hits] => 10171
)
[michel] => Array
(
[docs] => 314
[hits] => 353
)
[boulevard] => Array
(
[docs] => 19735
[hits] => 19915
)
)
В примере 2 третья запись должна была иметь самый большой вес.Ожидаемый результат - лучшее / точное совпадение, чтобы быть на вершине.Я пытался использовать разные режимы ранжирования, но безуспешно.