Sitecore高级数据库爬网程序字段排除

时间:2012-11-05 15:54:26

标签: sitecore lucene.net web-crawler adc

我需要创建一个特定的索引,以便从继承的模板中对特定字段执行搜索。创建索引并返回匹配结果的那部分非常简单。

我遇到的问题是,当进行的搜索不是该字段的预期匹配时,我得到错误的结果,因为Lucene.NET文档字段'_name'包含搜索条件并且正在考虑匹配

我正在使用高级数据库抓取工具,并且已经在调查中尽可能地排除几乎所有可能的字段,直到我使用Luke来揭示问题。

如何排除“_name”等文档字段,以排除这种情况,使其无法返回结果?

1 个答案:

答案 0 :(得分:0)

Lucene文档有一个RemoveField方法。在您的自定义DatabaseCrawler中,您通常可以从文档中删除字段:

public class MyCustomCrawler : Sitecore.Search.Crawlers.DatabaseCrawler
{
        protected override void AddAllFields(Lucene.Net.Documents.Document document, Sitecore.Data.Items.Item item, bool versionSpecific)
        {
            document.RemoveField("SomeFieldName");
            ...
        }
}

在这种情况下,字段会在“AddAllFields”之后添加。它发生在“AddSpecialFields”中,所以你可以这样做:

protected override void AddSpecialFields(Document document, Sitecore.Data.Items.Item item)
{
    // Do nothing, don't call base.AddSpecialFields
}