我需要创建一个特定的索引,以便从继承的模板中对特定字段执行搜索。创建索引并返回匹配结果的那部分非常简单。
我遇到的问题是,当进行的搜索不是该字段的预期匹配时,我得到错误的结果,因为Lucene.NET文档字段'_name'包含搜索条件并且正在考虑匹配
我正在使用高级数据库抓取工具,并且已经在调查中尽可能地排除几乎所有可能的字段,直到我使用Luke来揭示问题。
如何排除“_name”等文档字段,以排除这种情况,使其无法返回结果?
答案 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
}