Разные поисковые термины в разных полях с использованием синтаксического анализатора запросов edismax в solr - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть запрос solr, который ищет несколько полей.Чтобы увеличить отзыв, я также делаю групповые и нечеткие запросы.Я использую синтаксический анализатор запросов edismax, потому что я также должен использовать функцию повышения.

Вот соответствующие части запроса:

defType=edismax&q= (wine AND company) OR  (wine* AND company*)^0.5  OR (wine* OR company*)^0.01 OR (wine~1 AND company~1)^0.02&qf=primary_tags^1 secondary_tags_s^0.2 merchant_name_s^0.5

Теперь вышеприведенный запрос ищет (wine AND company) OR (wine* AND company*)^0.5 OR (wine* OR company*)^0.01 OR (wine~1 AND company~1)^0.02 на всехполя primary_tags^1 secondary_tags_s^0.2 merchant_name_s^0.5, но я хочу, чтобы поиск (wine AND company) проводился только на merchant_name_s^0.5, (wine* AND company*)^0.5 OR (wine* OR company*)^0.01 на primary_tags^1 и (wine~1 AND company~1)^0.02 на secondary_tags_s^0.2.

Что быправильный способ добиться этого?

1 Ответ

0 голосов
/ 19 ноября 2018

edismax поддерживает полный синтаксис Lucene .

q=merchant_name:(wine AND company)^0.5 primary_tags:(wine* AND company*)^0.5 primary_tags:(wine* OR company*)^0.01 secondary_tags_s:(wine~1 AND company~1)^0.0004

должно быть примерно таким же запросом, который вы описали. Я объединил часть secondary_tags_s в один отдельный вес и разделил предложения primary_tags, поскольку в любом случае поведение по умолчанию OR между терминами (в зависимости от q.op).

...