我正在使用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。
答案 0 :(得分:1)
分析,标记TextField不是一个非常好的独特键表示。它可能导致不可预测的结果。至少,您应该使用StrField或更好的UUIDField为您的密钥创建一个字段。 Apache wiki中有一些关于使用Unique Keys in SOLR的好建议。
答案 1 :(得分:0)
搜索存储文档ID号
的字段http://solr_server:8983/solr/index1/select?q=solrDocumentNumber:idA