0

数値範囲を使用して、neo/luceneでワイルドカードクエリをフィルタリングしようとしています。キー「actor」が「rob」で始まり、年齢が20を超えるすべてのノード(ドキュメント)を検索したい:

WildcardQuery luceneQuery  = new WildcardQuery( new Term("actor", "rob*" ));
QueryContext qx = new QueryContext(luceneQuery)
            .numericRange("age", 20, null)
                .sortNumeric("age", true);      
IndexHits<Node> hits = lucene.query(qx);

数値範囲を追加すると、ワイルドカードクエリは機能せず、数値範囲で並べ替えるだけです。ワイルドカードと数値の両方を組み合わせることができますか?

ありがとう、ダニエレ

4

1 に答える 1

1

BooleanQueryを使用してWildcardQueryを数値範囲クエリと組み合わせたいと思います。(私は通常、手動でクエリを作成するのではなく、自分でQueryParserを使用します。)

クエリの例では、QueryParserの構文は次のようになります。

+actor:rob* +age:{20 TO 123}

ここで、+ age:{20 TO 123}は、20歳以上および123歳未満を要求します(最も古い十分に文書化された人は122歳まで住んでいました)。「+」演算子は、これらの用語の両方をドキュメント内で強制的に使用します。

于 2012-08-28T22:31:11.647 に答える