Solr поиск нескольких слов по нескольким полям с мм - PullRequest
0 голосов
/ 08 июля 2020

Поиск слов, охватывающих разные поля, с использованием парсера запросов edismax с минимальным соответствием (мм) и sow = false (для синонимов времени запроса) генерирует разные запросы, когда поле подвергается разному анализу во время запроса (например, синонимы из нескольких слов, стоп words, et c)

Предполагается, что у меня есть 2 документа, в которых brand, description_synonyms и теги имеют разные данные

{id: 1
  brand: amul,
  description_synonyms: slice,
  tags: cheese
}
{id:2,
  brand: amul,
  description_synonyms:cake,
  tags: cheese
}

Ниже представлены проанализированные строки запроса для ключевых слов «amul cheese slice ". В этом случае mm (~ 2) попадает в разные поля, так как запрос не изменяется

"parsedquery_toString": "+((((brand:amul)^10.0 | (description_synonyms:amul)^4.0 | tags:amul)~1.0 
((brand:cheese)^10.0 | (description_synonyms:cheese)^4.0 | tags:cheese)~1.0 
((brand:slice)^10.0 | (description_synonyms:slice)^4.0 | tags:slice)~1.0)~2)"

, а ниже - проанализированная строка для «amul cheese cake». Поскольку торт имеет сливовый торт и c в качестве синонимов, а анализ времени запроса изменил исходный запрос для поля description_synonyms, edismax, созданный ниже запросом с миллиметрами (~ 2) для каждого поля, не дал совпадений

"parsedquery_toString": "+(((brand:amul brand:cheese brand:cake)~2)^10.0 | 
((description_synonyms:amul description_synonyms:cheese (description_synonyms:cupcak description_synonyms:pastri description_synonyms:\"plum cake\" description_synonyms:cake))~2)^4.0 | 
((tags:amul tags:cheese tags:cake)~2))~1.0"

Есть ли способ решить эту проблему? Любая помощь будет принята с благодарностью.

Изменить: после некоторых исследований мы нашли статьи ниже

  1. edismax-and-multiterm-synonyms-oddities

  2. apache почтовый архив

  3. apache почтовый архив 2

Похоже, что это уже существующая проблема.

Единственный способ, который я вижу, - это объединить все обязательные поля в одно поле и сделать на нем миллиметр.

...