在Solr中添加自定义查询参数的正确方法

时间:2012-05-01 16:08:08

标签: java search solr lucene

我目前正在运行一个工作正常的Solr客户端/服务器对。

但是,在某些情况下,发送给Solr的过滤器查询(fq参数)非常大(可能是数千个字符)并且无法减少。由于查询解析需要only a fraction of the overall time,我想尝试压缩此查询部分并将其发送到Solr。

我在考虑修改客户端,而不是fq它使用另一个参数(例如zfq)。然后Solr可以决定 - 如果它收到zfq,它会使用它并将数据解码为fq。否则它应该像往常一样。

实现上述目标的标准方法是什么?看起来有SearchHandlerrequestHandler<queryParser(都在solrconfig.xml中)和许多其他人,我不太确定什么是最不具侵入性的。我对Lucene / Tomcat非常有信心,但对Solr数据结构了解不多。

2 个答案:

答案 0 :(得分:1)

您可以让Solr容器占用极长的网址:Tomcat hereJetty here

如果fq有一些默认值,您可以创建一个默认包含它的查询解析器。

  <requestHandler name="for_some_queries" class="solr.SearchHandler" default="true">
    <!-- default values for query parameters -->
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <str name="fq">MY VERY LONG FQ</str>
     </lst>
  </requestHandler>

但我同意Mauricio Scheffer更好的设计。

答案 1 :(得分:0)

您是否考虑过使用此语法-category:(1 2 3 4 ... N)。这应该将字符串减少90%。比压缩更好。