Почему оператор расширения PHP в запросе Elasticsearch возвращает результаты, отличные от жестко запрограммированных часPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Почему оператор расширения PHP в запросе Elasticsearch возвращает результаты, отличные от жестко запрограммированных час

Сообщение Anonymous »

У меня возникла проблема, которую я не совсем понимаю. У меня есть следующий запрос Elasticsearch, написанный на PHP, с жестко запрограммированным сопоставлением нечеткости; в результате получается около 1500 ожидаемых результатов поиска.

Код: Выделить всё

private function phraseQuery(array $matchFields): array {
return [
'bool' => [
"minimum_should_match" => 1,
"should" => [
$this->multiMatch($matchFields),
[
'match' => [
'Title' => [
'query' => $this->searchTerm,
'fuzziness' => 'AUTO:4,8'
]
]
], [
'match' => [
'TransliteratedTitle' => [
'query' => $this->searchTerm,
'fuzziness' => 'AUTO:4,8'
]
]
]
]
]
];
}
Когда я заменяю «соответствующие» части моего запроса динамически генерируемыми с помощью функции, я получаю 4 точных результата поиска; Elasticsearch фактически игнорирует нечеткие запросы. Я подтвердил на PHP Playground, что структурно запросы абсолютно одинаковы, но, похоже, между этими двумя запросами есть разница. Оператор распространения PHP не работает таким образом?

Код: Выделить всё

private function fuss(array $matchFields): array {
$fuzziness = [];
foreach($matchFields as $field) {
$query = ['query' => $this->searchTerm , 'fuzziness' => 'AUTO:4,8'];
$match = [ $field => $query ];
$fuzziness[] = [ 'match' => $match ];
}
return $fuzziness;
}

private function phraseQuery(array $matchFields): array {
return [
'bool' => [
"minimum_should_match" => 1,
"should" => [
$this->multiMatch($matchFields),
...$this->fuss($matchFields),
]
]
];
}
Будем очень благодарны за любую помощь!
К вашему сведению: я использую Elastic Cloud и PHP v8
Я протестировал свой код на площадке PHP, чтобы убедиться, что запросы к Elasticsearch структурированы одинаково. Я запустил обе формы запроса, и одна вернула 4 результата, а другая — почти 1500.

Подробнее здесь: https://stackoverflow.com/questions/787 ... erent-resu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»