2016-04-09 11 views
1

[0, 10]にある用語を検索したいと思います。用語はIntegerとして格納されている "CityId"フィールドからのものです。私が書いたものは以下の通りです:Luceneで特定の範囲の用語を検索するには

String queryStr = "CityId : [0, 10]"; 
Query query = parser.parse(queryStr); 
TopDocs topDocs = searcher.search(queryStr); 
+0

あなたのクウェリーの痛恨は何ですか? querry文字列を解析したくない場合は、次のようなNumericRangeQueryを作成できます。NumericRangeQuery \t newIntRange(0,10、true、true) – TobiSH

答えて

1

標準のQueryParserは数値範囲をサポートしていません。 QueryParserでサポートされている範囲クエリは、数値ではなく、Lexicographicです。あなたはこのためNumericRangeQueryを使用する必要があります:

Query query = NumericRangeQuery.newIntRange("CityId", 0, 10, true, true); 

また、Luceneのクエリ構文がどのように見えるかのためにQueryParser documentationを参照すると良いかもしれません。範囲照会の上限と下限はコンマで区切られていません。 myField:[begin TO end]のようになります(ただし、これは数値の範囲ではありません)。

関連する問題