2

にある用語を検索したいのですが[0, 10]、用語は整数として保存されているフィールド「CityId」からのものです。私が書いたことは以下のとおりです。

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

1 に答える 1

2

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

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

また、 Lucene のクエリ構文がどのようなものかについては、 QueryParser のドキュメントを参照するとよいでしょう。範囲クエリの上限と下限はコンマで区切られていません。次のようになりますmyField:[begin TO end](繰り返しますが、これは数値範囲ではありません)。

于 2016-04-09T19:21:24.780 に答える