2

QueryParser でクエリを作成します。

QueryParser parser = new QueryParser(Version.LUCENE_30, "Text", new RussianAnalayzer());
parser.setDefaultOperator(QueryParser.Operator.AND);
Query query = parser.parse(searchString);

単語にバリエーションがあるフレーズを使用すると、「term1 term2」->「term1 AND "term2_1 AND term2_2"」のように「AND」で結合されます。文字列を単語に分割せずに、「term1 AND "term2_1 OR term2_2"」のようなクエリを取得するにはどうすればよいですか?

まことにありがとうございます。

4

1 に答える 1

0

私はあなたを理解しているかどうか完全にはわかりません。term2 はどのように複数の用語に分割されますか? あなたが話しているのは、次のような変数に格納されている用語のリストですか? term1 = "term1" term2 = "term2_1 term2_2" query = term1 + " " + term2;

それとも、(おそらくアナライザーなどによって) 自動的に分割される 2 つの用語だけですか?

いずれにせよ、与えられた2行目を次のように変更することはおそらくあなたの目的に役立つと思います:

parser.setDefaultOperator(QueryParser.Operator.OR);
//Or just delete this line if you prefer, OR is the default behavior.

次のような、その動作を考慮して意味のあるクエリを渡します。

"term1 AND (term2)"

これは、おそらく次のものと同等です。

"term1 AND (term2_1 term2_2)"
于 2012-11-07T19:45:24.587 に答える