架构更新后,Solr删除不起作用

时间:2011-08-11 16:28:34

标签: solr solrnet

我正在使用SolrNET将文档发布到Solr索引,以及从索引中删除文档。

到现在为止一直在努力。

我所做的是:

  • 在schema.config中,添加了一个字符串字段(此新字段存储GUID)而不是早期的UUID字段
  • 重新启动Tomcat

(我从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界面删除同一文档时,它可以正常工作。

我错过了什么? :)

干杯谢谢。

1 个答案:

答案 0 :(得分:1)

尝试将guid字段更改为string类型(您必须重新编制索引)。 text字段类型可能会进行一些分析,您不想分析此类数据,您希望逐字索引。