我目前正在运行一个工作正常的Solr客户端/服务器对。
但是,在某些情况下,发送给Solr的过滤器查询(fq
参数)非常大(可能是数千个字符)并且无法减少。由于查询解析需要only a fraction of the overall time,我想尝试压缩此查询部分并将其发送到Solr。
我在考虑修改客户端,而不是fq
它使用另一个参数(例如zfq
)。然后Solr可以决定 - 如果它收到zfq
,它会使用它并将数据解码为fq
。否则它应该像往常一样。
实现上述目标的标准方法是什么?看起来有SearchHandler
,requestHandler
,<queryParser
(都在solrconfig.xml中)和许多其他人,我不太确定什么是最不具侵入性的。我对Lucene / Tomcat非常有信心,但对Solr数据结构了解不多。
答案 0 :(得分:1)
您可以让Solr容器占用极长的网址:Tomcat here,Jetty 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%。比压缩更好。