2009-07-22 18 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 

मुझे लगता है कि आप अपने ऑपरेटरों (and, or) अपर केस बनाना चाहिए। साथ ही, मुझे नहीं लगता कि आप बराबर ऑपरेटर का उपयोग कर सकते हैं (इसके बजाए एक कोलन का उपयोग करें)।

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

धन्यवाद ... यह काफी सफल रहा आपकी मदद की –

+0

आप इसे करने के आसान बनाने में कर सकता है: 'सामग्री:" कुछ thext "और आईडी :('ए' या "बी" या "सी") ' –

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

ऐसा लगता है कि 'मॉड्यूलफिल्टर' को' idFilter' में बदला जाना चाहिए। उत्तर के लिए वैसे भी +1। – RyuuGan

+3

एक स्पष्टीकरण जो मुझे उपयोगी पाया गया था (ओकुर जावाडॉक्स से): किसी भी ऑयलर के साथ एक बूलियनक्वियर के लिए। केवल खंड, एक या अधिक होता है। क्लाउड को 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() 
संबंधित मुद्दे