Множитель {!boost} с парсером запросов dismax

Как я могу использовать множитель q={!boost ...} с парсером запросов dismax?

С помощью стандартного запроса вы можете сделать:

?q={!boost b=$multiplier}text:foo
&multiplier=...

Однако, когда я пытаюсь сделать то же самое для dismax:

?defType=dismax
&q={!boost b=$multiplier}foo
&qf=text
&multiplier=...

Я получаю следующую ошибку:

{
  "error": {
    "msg": "no field name specified in query and no default specified via 'df' param",
    "code": 400
  }
}

Я предполагаю, что указание {!boost ...} в q переопределяет defType=dismax и заставляет оставшуюся часть q анализироваться с использованием стандартного анализатора запросов. Как я могу использовать {!boost ...} с dismax?

ПРИМЕЧАНИЕ. Я использую Solr 4.10.4.


person All Workers Are Essential    schedule 30.06.2015    source источник


Ответы (1)


Согласно Часто задаваемым вопросам о релевантности Solr § Как повысить оценку новых документов,

Чтобы повысить эффективность другого анализатора запросов, такого как запрос dismax, значением этого запроса является полный подзапрос и, следовательно, может использоваться синтаксис {!queryParser}. Кроме того, параметр defType можно использовать в локальных параметрах boost, чтобы установить тип по умолчанию на dismax. Другие параметры dismax могут быть установлены как параметры верхнего уровня.

Это означает, что для использования dismax (или любого другого синтаксического анализатора запросов) с синтаксическим анализатором запросов boost вам необходимо структурировать параметры следующим образом:

?q={!boost b=$multiplier v=$qq}
&qq={!dismax}foo
&qf=text
&multiplier=...

Or:

?q={!boost b=$multiplier defType=dismax}foo
&qf=text
&multiplier=...
person All Workers Are Essential    schedule 01.07.2015