2011-07-01 18 views
2
私のようなファイルから2クエリを読んでいます

Luceneのクエリは

Query q1 = new QueryParser(Version.LUCENE_CURRENT, "id", analyzer).parse(dis.readLine()); 
Query q2 = new QueryParser(Version.LUCENE_CURRENT, "id", analyzer).parse(dis.readLine()); 

を後押し私はこれらのクエリが2すなわちQ2とを照会するために、1つのクエリとして組み合わせ、(5によって例えば)いくつかの弾みをつけることにしたいです。

おかげで、
ラヴィ

答えて

0

私は、クエリを後押しできるかどうかわかりません。たとえばインデックス作成時にフィールドを増やすことができます。

Field field = new Field("id", id, ......); 
field.setBoost(0.5); 

限り、これらの2つのクエリの組み合わせとして:

String term = dis.readLine() + " AND " + dis.readLine(); 

か、その効果に何か.....私は、これは動作するはずと信じて

+0

文字列term = dis.readLine()+ "AND" + dis.readLine()は実際には文字列のため、この文字列を解析できます。しかし、私が必要とするのは、2つのクエリQ1 n Q2をどのように組み合わせるかです。 私はq1..setBoost(0.5)を試しましたが、エラーが来ていないので、クエリの追加が可能です。私はブーストされたクエリを組み合わせたいと思います。 – ravi

1

q2.setBoost(5); 

BooleanQuery q3 = new BooleanQuery(); 
q3.add(q1, BooleanClause.Occur.SHOULD); 
q3.add(q2, BooleanClause.Occur.SHOULD); 

あなたをBooleanQueryq3を使用して検索します。

+0

ありがとうございます。私はクエリq1 =新しいQueryParser(Version.LUCENE_30、 "Id"、アナライザ).parse(dis.readLine())のようにしました。 \tクエリq2 =新しいQueryParser(Version.LUCENE_30、 "Id"、アナライザ).parse(dis.readLine());\t \t q1.setBoost(5f);クエリq = q1.combine(新しいクエリ[] {q2、q1}); – ravi

+0

これが実際に動作することを確認できますか? –

関連する問題