Umbraco Exmine引擎在修改文档后返回重复结果

Umbraco Exmine引擎在修改文档后返回重复结果,umbraco,lucene.net,umbraco6,examine,Umbraco,Lucene.net,Umbraco6,Examine,我正在使用“检查”搜索网站内容, 但是,每当一篇文章被更新时,它就会在结果中显示不止一次,其数量与修改次数相同 <IndexSet SetName ="ArabicIndexerIndexSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/Arabic/"> <IndexUserFields> <add Name="id" EnableSorting="true" Type="

我正在使用“检查”搜索网站内容, 但是,每当一篇文章被更新时,它就会在结果中显示不止一次,其数量与修改次数相同

      <IndexSet SetName ="ArabicIndexerIndexSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/Arabic/">
        <IndexUserFields>
          <add Name="id" EnableSorting="true" Type="Number" />
          <add Name="content" EnableSorting="true" />
          <add Name="author" EnableSorting="true" />
          <add Name="title" EnableSorting="true" />
          <add Name="description" EnableSorting="true" />
          <add Name ="umbracoNaviHide"/>
        </IndexUserFields>
      </IndexSet>



  <ExamineSearchProviders defaultProvider="ArabicSearcher">
    <providers>

<add name="ArabicSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine" 
           indexSet="ArabicIndexerIndexSet"
           supportUnpublished="false" 
           supportProtected="false"
           analyzer="Lucene.Net.Analysis.AR.ArabicAnalyzer, Lucene.Net.Contrib.Analyzers"/>

    </providers>
  </ExamineSearchProviders>
如何解决这个问题

编辑: 重建索引可以暂时解决问题,一旦再次修改文章,问题就会再次出现

编辑2:

我使用Luke来调查这个问题,唯一的区别是重复结果之间的更新日期。 如图所示:

编辑3: 我找到了一个有效的解决方案,但我不相信它:

建议使用以下代码:

public class UmbracoEvents: ApplicationBase
{
  /// <summary>Constructor</summary>
  public UmbracoEvents()
  {
    umbraco.content.AfterUpdateDocumentCache += new umbraco.content.DocumentCacheEventHandler(content_AfterUpdateDocumentCache);
  }

 privatevoid content_AfterUpdateDocumentCache(Document sender, umbraco.cms.businesslogic.DocumentCacheEventArgs e)
 {
   // Rebuild SiteSearchIndexer (Search results will be updated after a few minutes)
   ExamineManager.Instance.IndexProviderCollection["SiteSearchIndexer"].RebuildIndex();
 }
}
公共类事件:ApplicationBase
{
///建造师
公共活动()
{
umbraco.content.AfterUpdateDocumentCache+=新的umbraco.content.DocumentCacheEventHandler(content\u AfterUpdateDocumentCache);
}
privatevoid内容\u更新文档缓存后(文档发件人,umbraco.cms.businesslogic.DocumentCacheEventArgs e)
{
//重建SiteSearchIndexer(几分钟后将更新搜索结果)
ExamineManager.Instance.IndexProviderCollection[“SiteSearchIndexer”]。RebuildIndex();
}
}

此解决方案的问题是,重建包含大量内容的索引需要很长时间!(在我的例子中是10000个文档)并且在索引重建过程中,用户搜索任何内容都将得到0个结果,这让用户感到困惑。

看起来您的搜索查询结构不正确。如果要在“标题和内容”属性中搜索短语“测试短语”,则查询应为:

+(title:Test Phrase content:Test Phrase) +(umbracoNaviHide:0)

我想得到任何一篇文章,无论是标题还是内容都包含短语(测试短语)。如果查询是错误的,为什么除了返回新版本外还返回同一篇文章的旧版本?好的,我已经修改了。您是否在搜索查询中包含花括号{}?不,我没有,我将尝试您提到的查询。您应该修改您的问题以删除花括号。在那种情况下,我的答案和你的一样。你试过利用卢克来调查吗?很抱歉,我修复了该问题,这是因为从Visual Studio复制了值。关于Luke,我已经试着用它来读取索引,但不知道从哪里开始,一次只能搜索一个字段!除此之外,卢克没有阿拉伯语分析仪。还有一件事,我试图重建索引,它成功了!但每当我修改和重新发布时,同样的错误再次发生。
+(title:Test Phrase content:Test Phrase) +(umbracoNaviHide:0)