Examine を使用して Web サイトのコンテンツを検索していますが、記事が更新されるたびに、変更の数と同じカウントで結果に複数回表示されます!!
<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)
これを解決するには?
編集: インデックスを再構築すると一時的に問題が解決し、記事を再度変更すると、問題が再び発生します。
EDIT2:
Luke を使用して問題を調査しました。唯一の違いは、重複した結果の更新日です。画像を参照してください。
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 になり、ユーザーを混乱させます。