Solr自定义RequestHandler嵌套查询,带有布尔运算符和initParam

时间:2019-06-18 20:08:44

标签: solr exact-match edismax

如何使用布尔运算符向在嵌套查询中继承initParams的现有逻辑添加其他逻辑?

我正在solrconfig.xml中创建一个新的requestHandler,以向现有处理程序添加新逻辑。新的逻辑是将3个完全匹配项提升到顶部,其余的将遵循现有的逻辑。现有的搜索句柄在initParams中具有defType = edismax的参数列表。组合的逻辑应返回符合EITHER逻辑的文档。新逻辑继承了大多数initParams,但有一些例外。

如何将原始查询(仅继承iniParams)添加到结合​​了两者的嵌套查询中?我使用了- query :“”或 query :“ {!edismax v = $ exact_query}”,但它无法按预期工作。

 <initParams name="params">
    <lst name="defaults">
      <bool name="preferLocalShards">true</bool>
      <str name="defType">edismax</str>
      <str name="echoParams">explicit</str>
      <float name="tie">0.01</float>
      <str name="qf">cog.out(qf)</str>
      <str name="pf">cog.out(pf)</str>
      <str name="pf2">PrName^2</str>
      <str name="mm">2&lt;80%</str>
      <str name="mm.autoRelax">true</str>
    </lst>
  </initParams>

  <requestHandler name="defaultSearch" class="solr.SearchHandler" initParams="params">
  </requestHandler>

  <requestHandler name="combinedSearch" class="solr.SearchHandler" initParams="kwParams">
    <lst name="defaults">
      <str name="exact_qf">PrName_exact^100</str>
      <str name="exact_pf">PrName_exact^100</str>
      <str name="exact_sow">false</str>
      <str name="exact_rows">3</str>
      <str name="q">_query_:"{!edismax qf=$exact_qf pf=$exact_pf sow=$exact_sow rows=$exact_rows v=$exact_query}" OR _query_:"{!edismax v=$exact_query}"</str>
    </lst>
  </requestHandler>

示例:一个搜索项,它在defaultSearch请求处理程序中返回1000个文档。相同的搜索词在新的独立的compareSearch requestHandler中返回2个文档(2个文档的确切名称作为搜索词)。但是,组合的requestHandler仅返回2个完全匹配的文档。对于符合默认逻辑的文档,OR语句似乎无效,该默认逻辑仅继承了iniParams中的所有内容。

0 个答案:

没有答案