我正在使用 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 结果搜索任何内容,这使用户感到困惑。