2

Lucene 3.0.3 に数値フィールドがあり、範囲クエリで問題なく動作します。TermQuery に切り替えると、結果は生成されません。例えば:

    Document doc = new Document();
    String name = "geolongitude";
    NumericField numericField = new NumericField(name);
    double value = 29.0753505;
    String valueAsString = "29.0753505";
    numericField.setDoubleValue(value);
    doc.add(numericField);
    indexWriter.addDocument(doc);
    indexWriter.commit();
    indexWriter.close();
    IndexSearcher indexSearcher = new IndexSearcher(open);
    Query termQ = new TermQuery(new Term(name, valueAsString));
    TopDocs search = indexSearcher.search(termQ, 10);

この場合、結果は得られません。「NumericTermQuery」が存在するかどうかを調べようとしましたが、見つかりませんでした。ちょっとトリッキーなことをすることもできますが(検索している用語の範囲クエリを作成する)、解決策が気に入りません。

ありがとうございました!

4

3 に答える 3

-1

わかりました、私は別の解決策を考え出しました、

String doubleToPrefixCoded = NumericUtils.doubleToPrefixCoded(value);
Query termQ = new TermQuery(new Term(name, doubleToPrefixCoded));

http://www.gossamer-threads.com/lists/lucene/java-user/88516から見つけましたが、正しく動作します

于 2013-10-17T09:43:53.933 に答える