范围查询不再适用于Lucene 2.9.4.1

时间:2014-01-30 14:20:04

标签: c# lucene.net

从Lucene.Net 2.3.1.3升级到2.9.4.1后,RangeQuery不再有效。我没有运气就尝试过NumericRangeQuery和TermRangeQuery。 RangeQuery搜索范围内的Long值(例如[4000到5000]应该找到4500)。

以下是代码:

    private static Query BuildNumericRangeQuery(NumericRangeSearchParam.NumericRangeField range)
    {
        var startTerm = new Term(range.FieldName, NumberTools.LongToString(range.Start));
        var endTerm = new Term(range.FieldName, NumberTools.LongToString(range.End));
        return new RangeQuery(startTerm, endTerm, true);
    }

其他人遇到同样的问题?任何见解都将不胜感激!

1 个答案:

答案 0 :(得分:1)

该问题与Index Crawler将数据填充为10个字符有关,具体如下:

var transformation = (int) Math.Floor(rating*1000);
var result = ToLexographical(transformation, 10); //which results in 0000004500 as an example.

我把它改为ToLexographical(转换,4),这导致了4个字符的字符串(ex-4500)。不知道之前是如何工作的,因为[4000 TO 5000]在技术上不应该使用Lexographic订购找到0000004500。

相关问题