我是SOLR的新手,我们拥有数百万的联系人和公司的CRM数据,我们已切换到SOLR以获得快速搜索结果。
问题:我们有大量的包含和排除列表,其中包含公司或联系人的姓名。 例如:包含或排除:"公司A" &安培; "公司B" &安培; "公司C" ....& "公司n"假设n = 10000;
使用SOLR进行此类查询的最佳方法是什么?
我做了什么: 设置" q" ==> field_name :(" companyA" OR" companyB" ..... OR"公司n"); 这仅适用于400多个列表。
期待在此方面提供帮助。
答案 0 :(得分:0)
您可以增加布尔子句的最大数量:请参见此处:http://wiki.apache.org/solr/SolrConfigXml
性能提示:在您的情况下,我会考虑将包含和排除列表打包到过滤器中,并让结果缓存以供重用。
答案 1 :(得分:0)
这种情况可能有多种原因:
检查您查询Solr的方式。是GET
方法还是POST
?如果是GET
方法,则所有参数都作为URL的一部分传递,即http://<host:>q=field_name:(....)
。一个URL可以拥有的最大字符数 2048 由Microsoft定义。如果您的编程形式的网址超过 2048 字符,则可以更改查询模型或进行POST
调用。
如果#1不适用于您的案例,请检查maxBooleanClauses
文件中的solrConfig.xml
标记。如果缺少,则按照Solr wiki的指南添加它。
http://wiki.apache.org/solr/SolrConfigXml#The_Query_Section
您可以将maxBooleanClauses
中solrConfig.xml
的值增加到所需级别。默认情况下,此值为1028.
Shishir