2014-01-30 1 views
0

Lucene.Net 2.3.1.3에서 2.9.4.1로 업그레이드 한 후 RangeQuery가 더 이상 작동하지 않습니다. 나는 운이없는 NumericRangeQuery와 TermRangeQuery를 시도했다. RangeQuery는 범위의 Long 값을 검색합니다 (ex - [4000 TO 5000]은 4500을 찾아야 함). 같은 문제에Rangequery가 Lucene에서 더 이상 작동하지 않음 2.9.4.1

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); 
    } 

누구나 다른 실행 : 여기

코드인가? 모든 통찰력은 인정 될 것입니다!

이 문제는 다음과 같이 10 개 개의 문자로 색인 크롤러 패딩에 데이터를 관련이
+0

RangeQuery가 사용되지 않습니다. 대신 TermRangeQuery 또는 NumericRangeQuery를 사용하도록 쿼리를 다시 작성하십시오. http://lucene.apache.org/core/2_9_4/api/all/org/apache/lucene/search/RangeQuery.html – sisve

+0

결과없이 NumericRangeQuery와 TermRangeQuery를 모두 시도했습니다. 나는 데이터가 10 문자로 채워져있는 것을 발견했다. var transformation = (int) Math.Floor (rating * 1000); var result = ToLexographical (transformation, 10); ... 0000004500을 예로들 수 있습니다. –

+0

예, 색인 생성 중에도 동일한 패딩이 적용됩니다. 맞습니까? – sisve

답변

1

:

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

(변환, 4) 4 문자열에 어떤 결과 (예 - 4500). [4000 - 5000]은 기술적으로 Lexographic 순서로 0000004500을 찾지 않아야하기 때문에 이전에 어떻게 작동했는지 확신 할 수 없습니다.

관련 문제