Lucene 如何让Examine在Umbraco 7中执行短语查询?

Lucene 如何让Examine在Umbraco 7中执行短语查询?,lucene,umbraco,umbraco7,examine,Lucene,Umbraco,Umbraco7,Examine,我试图在Umbraco 7(7.3.6)中构建一些自定义搜索逻辑,该逻辑将搜索用户提供的多个术语,其中这些术语可能包括引号中的短语 我有下面的代码,它采用提供的术语,使用正则表达式分割单个术语(同时保留括在引号中的术语),然后使用一系列GroupedOr调用来搜索多个字段 var searcher = Examine.ExamineManager.Instance.SearchProviderCollection[this.searchConfig.SiteSearchProviderName]

我试图在Umbraco 7(7.3.6)中构建一些自定义搜索逻辑,该逻辑将搜索用户提供的多个术语,其中这些术语可能包括引号中的短语

我有下面的代码,它采用提供的术语,使用正则表达式分割单个术语(同时保留括在引号中的术语),然后使用一系列
GroupedOr
调用来搜索多个字段

var searcher = Examine.ExamineManager.Instance.SearchProviderCollection[this.searchConfig.SiteSearchProviderName];

var searchCriteria = searcher.CreateSearchCriteria(Examine.SearchCriteria.BooleanOperation.Or);

var splitTerms = Regex.Matches(term, @"[\""].+?[\""]|[^ ]+")
    .Cast<Match>()
    .Select(m => m.Value)
    .ToArray();

var query = searchCriteria.GroupedOr(
    new[] { BaseContent.FIELD_NodeName },
    this.GetValues(splitTerms, 3, 0.8F))
.Or()
.GroupedOr(
    new[] { this.searchConfig.ContentFieldName },
    this.GetValues(splitTerms, 1, 0.8F));
我的索引中有一个文档,里面有一个术语“敏捷的棕色狐狸跳过了懒狗”。如果我通过上述逻辑传递字符串
“\'brown fox\”
,然后检查我的查询,我可以看到我的
query
对象包含以下Lucene查询:

(nodeName:"brown fox"~0.8) (_content:"brown fox"~0.8)
然而,当我使用它来构建如下的搜索查询时,我没有得到任何结果

var searchQuery = searcher
    .Search(query.Compile(), 100)
    .OrderByDescending(x => x.Score)
    .TakeWhile(x => x.Score > 0.05f);
但是如果我使用运行完全相同的Lucene查询,我会得到预期的结果

有人能帮我理解这一点吗?如果你能解释为什么我的提升值没有被添加到Lucene查询中,那就多加一分

var searchQuery = searcher
    .Search(query.Compile(), 100)
    .OrderByDescending(x => x.Score)
    .TakeWhile(x => x.Score > 0.05f);