1

我正在使用 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。

4

2 回答 2

1

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

于 2013-04-19T16:33:22.133 回答
0

搜索存储文档 ID 号的字段

http://solr_server:8983/solr/index1/select?q=solrDocumentNumber:idA
于 2013-04-19T10:18:40.887 回答