本文整理汇总了C#中Lucene.Net.Search.BooleanQuery.AddRangeQuery方法的典型用法代码示例。如果您正苦于以下问题:C# BooleanQuery.AddRangeQuery方法的具体用法?C# BooleanQuery.AddRangeQuery怎么用?C# BooleanQuery.AddRangeQuery使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Lucene.Net.Search.BooleanQuery
的用法示例。
在下文中一共展示了BooleanQuery.AddRangeQuery方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Split
private static IEnumerable<Query> Split(IEnumerable<Range> parts, string prefix)
{
var currentPart = parts.First();
var remainingParts = parts.Skip(1);
if(remainingParts.Any())
{
var lowerEdgeQuery = GetLowerEdgeQuery(prefix, remainingParts);
var upperEdgeQuery = GetUpperEdgeQuery(prefix, remainingParts);
if (lowerEdgeQuery.Any() || upperEdgeQuery.Any() || !currentPart.IsFloorValue || !currentPart.IsCeilingValue)
{
var query = new BooleanQuery();
var midRangeStart = currentPart.Value(currentPart.Start);
var midRangeEnd = currentPart.Value(currentPart.End);
if (lowerEdgeQuery.Any())
{
midRangeStart = currentPart.Value(currentPart.Start + 1);
query.AddClause(GetCombinedTermAndSplitQuery(prefix, lowerEdgeQuery, currentPart), BooleanClause.Occur.SHOULD);
}
if (upperEdgeQuery.Any())
{
midRangeEnd = currentPart.Value(currentPart.End - 1);
query.AddClause(GetCombinedTermAndSplitQuery(prefix, upperEdgeQuery, currentPart), BooleanClause.Occur.SHOULD);
}
if (currentPart.End - currentPart.Start > 1)
{
query.AddRangeQuery(currentPart.Name(prefix), midRangeStart, midRangeEnd, BooleanClause.Occur.SHOULD);
}
yield return query;
}
}
else
{
if (!currentPart.IsFloorValue || !currentPart.IsCeilingValue)
{
yield return
new RangeQuery(
new Term(currentPart.Name(prefix), currentPart.Value(currentPart.Start)),
new Term(currentPart.Name(prefix), currentPart.Value(currentPart.End)),
true);
}
}
}
开发者ID:ctekempel,项目名称:Solving-the-Scaling-Challenge-with-Lucene,代码行数:49,代码来源:CompositeDateQueryFactory.cs