2009-07-22 8 views
10

私はLuceneのに新しいです、私は私は本当にそれで失われています。このLuceneの「やクエリ」

content="some thext" and (id ="A" or id="B" or id="c") 

のような検索に何かをしようとしています、あなたは

はありがとう私を助けることができます。

答えて

10

私はQuery Parser Syntax documentationで「グループ化」セクションでは、答えを提供してい信じる:

(jakarta OR apache) AND website 

私はあなたがあなたの演算子(andor)アッパーケースを作る必要があると思います。同様に、私はequals演算子を使うことはできないと思います(代わりにコロンを使用してください)。

content:"some thext" AND (id:"A" OR id:"B" OR id:"c") 
+0

(==しなければならず、ORを==必要があります)あなたはそれを簡略化することができ –

+0

それはあなたの助けとても成功した...ありがとう: '内容: "いくつかのthext" とID :("A" OR "B" OR "c") ' –

21
BooleanQuery mainQuery = new BooleanQuery(); 

TermQuery contentFilter = new TermQuery(new Term("content", "some text")); 
mainQuery.add(contentFilter, BooleanClause.Occur.MUST); 

BooleanQuery idFilter = new BooleanQuery(); 
idFilter.setMinimumNumberShouldMatch(1); 
idFilter.add(new TermQuery(new Term("id", A)), BooleanClause.Occur.SHOULD); 
idFilter.add(new TermQuery(new Term("id", B)), BooleanClause.Occur.SHOULD); 
idFilter.add(new TermQuery(new Term("id", C)), BooleanClause.Occur.SHOULD); 
mainQuery.Add(idFilter, BooleanClause.Occur.MUST); 
+1

' moduleFilter'は 'idFilter'に変更する必要があります。とにかく+1の答えです。 – RyuuGan

+3

説明Occur javadocsから便利だとわかりました:Occur.MUST句を持たないBooleanQueryの場合、1つまたは複数のOccur.SHOULD句が一致するBooleanQueryのドキュメントと一致する必要があります。 – Renaud

-1

BooleanQueryが廃止されます。

新しい構文は次のようになります。

val searchManager = Search.getSearchManager(cache) 
val queryBuilder = searchManager.buildQueryBuilderForClass(classTag[T].runtimeClass).get() 
val luceneQuery = queryBuilder.bool() 
luceneQuery.should(new TermQuery(new Term("type", "lala")) 
luceneQuery.createQuery() 
関連する問題