APACHE SOLR:为同一领域提供多个OR条件的最佳方法

时间:2014-02-11 14:51:42

标签: solr lucene

我是SOLR的新手,我们拥有数百万的联系人和公司的CRM数据,我们已切换到SOLR以获得快速搜索结果。

问题:我们有大量的包含和排除列表,其中包含公司或联系人的姓名。 例如:包含或排除:"公司A" &安培; "公司B" &安培; "公司C" ....& "公司n"假设n = 10000;

使用SOLR进行此类查询的最佳方法是什么?

我做了什么: 设置" q" ==> field_name :(" companyA" OR" companyB" ..... OR"公司n"); 这仅适用于400多个列表。

期待在此方面提供帮助。

2 个答案:

答案 0 :(得分:0)

您可以增加布尔子句的最大数量:请参见此处:http://wiki.apache.org/solr/SolrConfigXml

性能提示:在您的情况下,我会考虑将包含和排除列表打包到过滤器中,并让结果缓存以供重用。

答案 1 :(得分:0)

这种情况可能有多种原因:

  1. 检查您查询Solr的方式。是GET方法还是POST?如果是GET方法,则所有参数都作为URL的一部分传递,即http://<host:>q=field_name:(....)。一个URL可以拥有的最大字符数 2048 由Microsoft定义。如果您的编程形式的网址超过 2048 字符,则可以更改查询模型或进行POST调用。

  2. 如果#1不适用于您的案例,请检查maxBooleanClauses文件中的solrConfig.xml标记。如果缺少,则按照Solr wiki的指南添加它。

  3. http://wiki.apache.org/solr/SolrConfigXml#The_Query_Section

    您可以将maxBooleanClausessolrConfig.xml的值增加到所需级别。默认情况下,此值为1028.

    Shishir