Режим ранжирования сфинксов не работает

Я использую 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 - не поддавайтесь искушению другими режимами.

Другие вопросы по тегам