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)