我们使用以下代码:
var searcher = ExamineManager.Instance
.SearchProviderCollection[SearchProviderName];
var criteria = searcher.CreateSearchCriteria();
q = q.And()
.Range("dateRangeStart",
startRange.ToString("yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture),
endRange.ToString("yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture),
true, true)
);
criteria = q.Compile();
var searchResult = searcher.Search(criteria).AsEnumerable();
在基于单个日期范围内的单个日期进行搜索时效果很好。然而,我们需要的是使用 2 个日期进行搜索,如果其中一个日期在给定的日期范围内,则返回结果。
最佳答案
大概您可以在相同范围但不同字段上做进一步的 AND:
q = q.And()
.Range("dateRangeStart",
startRange.ToString("yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture),
endRange.ToString("yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture),
true, true)
.And().Range("dateRangeEnd",
startRange.ToString("yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture),
endRange.ToString("yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture),
true, true);
这是假设另一个字段称为 dateRangeEnd
。
关于c# - Umbraco Lucene 或搜索多个日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18819690/