我正在使用SolrNET将文档发布到Solr索引,以及从索引中删除文档。
到现在为止一直在努力。
我所做的是:
(我从UUID字段切换到字符串字段,因为它对我来说效果不好,但这是另一个故事。)
这是我的schema.config的样子:
<fields>
<field name="id" type="int" indexed="true" stored="true" required="true" />
<field name="searchobjecttype" type="string" indexed="true" stored="true" required="true" />
<field name="heading" type="text" indexed="true" stored="false" required="false" />
<field name="body" type="text" indexed="true" stored="false" required="false" />
<field name="locationid" type="int" indexed="true" stored="true" required="false" />
<field name="currentlocationid" type="int" indexed="true" stored="true" required="false" />
<field name="countryid" type="int" indexed="true" stored="true" required="false" />
<field name="currentcountryid" type="int" indexed="true" stored="true" required="false" />
<field name="forumroom" type="int" indexed="true" stored="true" required="false" />
<field name="forumtopicid" type="int" indexed="true" stored="true" required="false" />
<field name="dt" type="date" indexed="true" stored="false" required="false" />
<field name="txt" type="text" indexed="true" stored="true" multiValued="true" />
**<field name="guid" type="text" indexed="true" stored="true" required="false" />**
</fields>
<copyField source="id" dest="txt" />
<copyField source="searchobjecttype" dest="txt" />
<copyField source="heading" dest="txt" />
<copyField source="body" dest="txt" />
<copyField source="locationid" dest="txt" />
<copyField source="currentlocationid" dest="txt" />
<copyField source="countryid" dest="txt" />
<copyField source="currentcountryid" dest="txt" />
<copyField source="forumroom" dest="txt" />
<copyField source="forumtopicid" dest="txt" />
<copyField source="dt" dest="txt" />
**<uniqueKey>guid</uniqueKey>**
<defaultSearchField>txt</defaultSearchField>
<solrQueryParser defaultOperator="AND" />
此查询之前有效:
var q = solr.Query(Query.Field("id").Is(item.Id.ToString()) && Query.Field("searchobjecttype").Is(item.SearchObjectType));
solr.Delete(q);
solr.Commit();
虽然它现在不起作用。
调试时,我可以看到查询与文档匹配(当查询找到项时,NumFound属性返回的值大于0)。但是没有删除。
当我尝试通过Solr的Web界面删除同一文档时,它可以正常工作。
我错过了什么? :)
干杯谢谢。
答案 0 :(得分:1)
尝试将guid字段更改为string
类型(您必须重新编制索引)。 text
字段类型可能会进行一些分析,您不想分析此类数据,您希望逐字索引。