Solr Custom RequestHandler вложенный запрос с логическим оператором и initParam - PullRequest
0 голосов
/ 18 июня 2019

Как добавить дополнительную логику с помощью логического оператора к существующей логике, которая наследует initParams во вложенных запросах?

Я создаю новый requestHandler в solrconfig.xml, чтобы добавить новую логику в существующий обработчик.Новая логика состоит в том, чтобы поднять 3 элемента с точным соответствием к вершине, а остальные будут следовать существующей логикеСуществующий дескриптор поиска имеет список параметров в initParams с defType = edismax.Комбинированная логика должна возвращать документы, соответствующие ЛЮБОЙ логике.Новая логика наследует большинство initParams с несколькими исключениями.

Как я могу добавить исходный запрос (который просто наследует iniParams) к вложенному запросу, который объединяет оба?Я использовал - query : "" OR query : "{! Edismax v = $ correct_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>

Пример: Условие поиска, которое возвращает 1000 документов в обработчике запросов defaultSearch.Тот же поисковый запрос возвращает 2 документа в новом отдельном запросе точного поиска (2 документа имеют точное имя в качестве поискового запроса).Однако объединенный requestHandler возвращает только 2 документа точного соответствия.Оператор OR не работает для документов, которые соответствуют логике по умолчанию, которая просто наследует все в iniParams.

...