Solr不在id搜索中返回文档

时间:2013-04-19 09:54:01

标签: java solr lucene solrj

我正在使用solr 4.2.x的分布式搜索,它似乎在其中一个索引上崩溃了。错误是NullPointerException,我调试了以下情况

假设我有两个包含文档的索引:

  • index1,包含唯一文档ID = idA

  • 的文档
  • index2,其中包含唯一文档ID = idB

  • 的文档

当我使用ids参数搜索索引时,其中一个不返回文档 - 即使它在那里(管理面板的查询返回它)。

我执行的请求:

http://solr_server:8983/solr/index1/select?ids=idA
http://solr_server:8983/solr/index2/select?ids=idB

并且其中一个没有返回所请求的文件。

模式的id部分如下所示(两个索引中都相同):

<fields>

<types>
<fieldType name="textGeneral" class="solr.TextField">
            <analyzer type="index">
                <tokenizer class="solr.StandardTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
            </analyzer>
        </fieldType>

</types>

...
<field name="solrDocumentNumber" type="textGeneral" indexed="true" stored="true" required="false"/>
...
</fields>

<uniqueKey>solrDocumentNumber</uniqueKey>

我使用标准的requestHandlers。

2 个答案:

答案 0 :(得分:1)

分析,标记TextField不是一个非常好的独特键表示。它可能导致不可预测的结果。至少,您应该使用StrField或更好的UUIDField为您的密钥创建一个字段。 Apache wiki中有一些关于使用Unique Keys in SOLR的好建议。

答案 1 :(得分:0)

搜索存储文档ID号

的字段
http://solr_server:8983/solr/index1/select?q=solrDocumentNumber:idA