Java 在Solr中添加自定义查询参数的正确方法
我目前正在运行Solr客户机/服务器对,该对工作正常 但是,在某些情况下,发送到Solr的筛选器查询(Java 在Solr中添加自定义查询参数的正确方法,java,search,solr,lucene,Java,Search,Solr,Lucene,我目前正在运行Solr客户机/服务器对,该对工作正常 但是,在某些情况下,发送到Solr的筛选器查询(fq参数)非常大(可以是数千个字符),并且无法缩减。随着查询解析的进行,我想尝试压缩这个查询部分并将其发送给Solr 我正在考虑修改客户端,以便它使用另一个参数(例如zfq),而不是fq。Solr然后可以决定-如果它接收到zfq,它将使用它并将数据解码为fq。否则它应该像往常一样 实现上述目标的标准方法是什么?看起来有SearchHandler,requestHandler,您可以让您的Solr
fq
参数)非常大(可以是数千个字符),并且无法缩减。随着查询解析的进行,我想尝试压缩这个查询部分并将其发送给Solr
我正在考虑修改客户端,以便它使用另一个参数(例如zfq
),而不是fq
。Solr然后可以决定-如果它接收到zfq
,它将使用它并将数据解码为fq
。否则它应该像往常一样
实现上述目标的标准方法是什么?看起来有
SearchHandler
,requestHandler
,您可以让您的Solr容器占用非常长的URL:
如果fq
s有一些默认值,您可以创建一个默认包含它的查询解析器
<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>
明确的
我的很长的FQ
但是我同意Mauricio Scheffer关于更好设计的观点。您是否考虑过使用这种语法-category:(1 2 3 4…N)。这将使字符串减少90%。比压缩要好。一个fq
中包含数千个字符似乎不正确。与其试图绕过这些限制,不如问问自己为什么你会碰到这些限制。描述你真正的问题。真正的问题超出了这个问题的范围。但是如果你想听的话-当然,没问题!长度取决于权限的实现方式。对于具有广泛权限集的客户,筛选查询如下所示:“:-category:1和-category:2和…-category:N”。当模式重复时,哪一个是压缩的最佳候选者。您见过关于文档级安全性的JIRA问题吗?感谢您的链接,但在这个阶段我无法更改现有的体系结构,尤其是这只是一个补丁,而不是官方Solr发行版的一部分。我只是想做个实验,就这样。你有没有想过使用这个语法-category:(1234…N)。这将使字符串减少90%。比压缩更好。fq
永远不会保持不变,因此将其设为默认值也无济于事。我真正的问题是如何扩展Solr,而不是如何解决这个问题。错误的假设:-)但是增加应用程序容器的标题长度(因此URL长度)不会解决你的问题吗?我已经这样做了,但我想尝试存档查询,看看这是否有助于减少延迟。我希望悬赏积分没有过期,因为你花了太长时间才发布答案:(