1

我正在使用 Examine 搜索网站内容,但是每当更新文章时,它会在结果中多次显示,与修改次数相同!

      <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>

这是我的查询:

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

如何解决这个问题?

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

编辑2:

我用卢克来调查这个问题,唯一的区别是重复结果之间的更新日期。看图片: 结果

EDIT3:我找到了一个可行的解决方案,但我不相信这里:索引不会自动更新

建议使用以下代码:

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();
 }
}

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

4

1 回答 1

0

您的搜索查询的结构似乎不正确。如果您在 title 和 content 属性中搜索短语“Test Phrase”,您的查询应该是:

+(title:Test Phrase content:Test Phrase) +(umbracoNaviHide:0)
于 2014-08-07T13:15:59.593 回答