Der*_*ker 1 lucene.net sitecore sitecore7
我正在寻找一种优雅的方法来从我的Web索引中排除克隆的项目.我的搜索结果中的项目显示为重复项.如果只出现原始项目而根本没有克隆,我更喜欢它.
想到的一些可能的解决方案是:
Global Item Boosting Rule如果项目的_Source字段不为空,则创建一个以大幅降低提升值.这不是优选的,因为它仅降低分数并且不从搜索结果中移除克隆.
使用扩展的Where子句排除我执行的每个查询中的克隆项.这也不是首选,因为这意味着我需要记住在所有查询中包含此子句.此外,克隆的项目仍保留在索引中.
Sitecore v7.1
您可以创建自定义搜寻器并在其中添加逻辑以排除克隆的项目.
我正在考虑的方法是创建一个继承Sitecore.ContentSearch.SitecoreItemCrawler并覆盖该DoAdd()方法的类.
像这样的东西:
protected override void DoAdd(IProviderUpdateContext context, SitecoreIndexableItem indexable)
{
Assert.ArgumentNotNull((object) context, "context");
Assert.ArgumentNotNull((object) indexable, "indexable");
if (!indexable.Item.IsClone)
{
base.DoAdd(context, indexable);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您需要设置爬网程序配置以使用自定义爬网程序.
在Sitecore.ContentSearch.<Lucene/Solr>.Index.<databasename>.config文件中,您可以定义使用哪些爬网程序.
您需要更新contentSearch/configuration/indexes/locations/crawler元素并指向那里的类.
| 归档时间: |
|
| 查看次数: |
591 次 |
| 最近记录: |