6

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

但是,在某些情况下,fq发送到 Solr 的过滤器查询(参数)非常大(可能是数千个字符)并且无法修剪。由于查询解析只占用总时间的一小部分,我想尝试压缩此查询部分并将其发送到 Solr。

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

实现上述目标的标准方法是什么?看起来有SearchHandler, requestHandler, <queryParser(都在 solrconfig.xml 中)和许多其他的,我不太确定什么是最不打扰的。我对 Lucene/Tomcat 相当有信心,但对 Solr 数据结构了解不多。

4

2 回答 2

1

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

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

  <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 的观点,他提出了更好的设计。

于 2012-05-02T09:36:57.140 回答
0

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

于 2012-05-17T19:30:31.547 回答