Solr edismax обработка парсера запросов стоп-слов - PullRequest
0 голосов
/ 30 апреля 2018

Я настроил пример solr techproducts в solr 7.2.1 и сделал одно изменение: я нашел файл stopwords.txt и добавил «a» в качестве стоп-слова. Затем я выполняю два запроса в режиме отладки, чтобы увидеть, как анализируется запрос.

Я пробовал два запроса: "x a b" и "x b".

Вот необработанный запрос:

q=x b&fl=id,score,price&sort=score desc&qf=name^0.75 manu cat^3.0 features^10.0&defType=edismax

и

q=x a b&fl=id,score,price&sort=score desc&qf=name^0.75 manu cat^3.0 features^10.0&defType=edismax

Идея состоит в том, что мне нужны разные весовые коэффициенты для разных полей, и я хочу иметь возможность брать оценку каждого слагаемого из его наилучшего поля, то есть получать оценку «х» по совпадению с полем «кошка» и «b» против поля «черты».

Когда у меня есть «x b», я получаю именно это поведение с помощью разобранного запроса следующим образом:

+(((name:x)^0.75 | manu:x | (features:x)^10.0 | (cat:x)^3.0) ((name:b)^0.75 | manu:b | (features:b)^10.0 | (cat:b)^3.0))

Когда я использую "x a b", я вместо этого получаю:

+((name:x name:b)^0.75 | (manu:x manu:b) | (features:x features:b)^10.0 | (cat:x cat:a cat:b)^3.0)

С помощью запроса "x a b" предположим, что документ 1 соответствует "x" в "features" и соответствует "b" в "cat". Этот документ получит единственную оценку, основанную либо на его «x», либо на «b», но оценка не будет суммой, как в случае запроса «x b».

Как заставить синтаксический анализатор edismax вести себя одинаково для запросов со стоп-словами, как это происходит без стоп-слов, сохраняя поведение постоянным для запросов без стоп-слов?

Я также заметил, что это, похоже, не влияет на парсер запросов dismax - только парсер запросов edismax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...