Режим ранжирования сфинксов не работает
Я использую sphinx 2.1.4
Я ищу с sphinx с помощью следующих методов,
Первый::
Используя sphinxql через PDO в php, используя этот запрос
SELECT * FROM $indexes WHERE MATCH(:match) LIMIT 0,10 OPTION ranker=bm25
Теперь, когда я делаю то же самое с sphinxapi.php, который поставляется вместе с установкой, режим ранжирования, похоже, работает только как SPH_RANK_MATCHANY. Изменение режима ранжирования через API не работает, оно дает тот же результат.
Вот реализация API:
$conn = new SphinxClient();
$conn->SetServer("192.168.x.x", 9312);
$conn->SetMatchMode(SPH_MATCH_ANY);
$conn->SetRankingMode(SPH_RANK_BM25);
$conn->SetArrayResult(true);
$rows = $conn->Query('query', 'test1');
Методы запроса, кажется, работают, но не API. Я проверил это несколько раз. Есть ли ошибка или я делаю что-то не так?
1 ответ
SetRankingMode работает только если вы используете SPH_MATCH_EXTENDED
SphinxQL - это всегда расширенный режим сопоставления - он единственный, который он поддерживает (возможно, можно изменить режим сопоставления с помощью недокументированной опции, но не рекомендуется)
Чтобы было понятно, режим матча и режим ранжирования - это две разные вещи. Концепция различных режимов сопоставления устарела и поэтому не раскрывается в SphinxQL.
Если вы действительно хотите использовать API, предложите придерживаться SPH_MATCH_EXTENDED - не поддавайтесь искушению другими режимами.