我想用 HttpWebRequest 更新 Solr 中的现有记录。我正在使用 Solr 4.3.0,我不想使用任何像 SolrNet 这样的库。我想做的是在 Solr 中准备一些数据,然后对我的应用程序(确实使用 SolrNet)执行查询,以测试在查询时是否返回准备好的数据。
我有两个问题。
首先,在执行原子更新查询时,Solr 抱怨缺少必填字段。我不想提供除了 uniqueID 和要更新的字段之外的任何字段,这可能吗?
其次,似乎如果我确实提供了所有必填字段,Solr 就会创建一个新文档。这让我怀疑 uniquekey 没有正常工作。
唯一键是:
<field name="ObjectGuid" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
像这样设置:
<uniqueKey>ObjectGuid</uniqueKey>
现在我的 Solr 索引中有两个文档,它们都具有相同的 ObjectGuid ...
任何帮助表示赞赏。
编辑: 感谢您到目前为止的答复。
1、2 更新文档示例:
<add>
<doc>
<field name="ObjectGuid">33176f43-b446-481b-84e9-3facf4d71717</field>
<field name="MyDate" update="set">2013-07-14T08:25:09Z</field>
</doc>
</add>
3
感谢您指出注意事项。stored="true"
除了以下两个之外,我的架构中的所有字段都有:
此外,一些<dynamicField>
节点有stored="false"
这两种情况是否可能导致问题?
(另外,我在 solrconfig.xml 中找不到 DistributedUpdateRequestProcessorFactory。如果我正确阅读了警告,如果我们没有为该方面添加任何修饰符,则行为是默认的,不应阻止原子更新。 )
最后 ,我认为 Guid 字段中可能存在区分大小写的问题。我之前已经注意到了这一点。我们使用DataHandler从数据库中导入数据,在Database中Guid都是大写的。我注意到(使用 SolrNet 时)Guids 以小写形式返回,但需要提供回 Solr 大写形式……有没有其他人看到过这种行为,如果有,有没有办法避免这种情况?