You didn't show us your "luceneQuery", but the gist of the solution is to use MUST clauses for each of the individual terms and then a SHOULD of the phrase. You can add an additional boost to the phrase, but lucene should naturally boost documents containing the phrase.

-- Jack Krupansky

-----Original Message----- From: sxam
Sent: Saturday, June 30, 2012 3:55 PM
To: java-user@lucene.apache.org
Subject: Searching both phrase and it's words

Hi,
Suppose we have a query "balcony table". I want results to be returned by
exact match (first priority) and by single words matching as well (for
"balcony" or for "table"). So currently my solution is:

Analyzer analyzer = new SnowballAnalyzer("English",
StopAnalyzer.ENGLISH_STOP_WORDS_SET);
           QueryParser contentParser = new QueryParser(Version.LUCENE_29,
"content", analyzer);

           Query phraseContentQuery =
contentParser.Parse("\""+QueryParser.Escape(luceneQuery)+"\"");

           if (phraseContentQuery is PhraseQuery)
           {
               ((PhraseQuery)phraseContentQuery).SetSlop(100);
           }

           Query simpleParsedQuery =
contentParser.Parse(QueryParser.Escape(luceneQuery));

           BooleanQuery boolQuery = new BooleanQuery();

           boolQuery.Add(simpleParsedQuery, BooleanClause.Occur.SHOULD);
           boolQuery.Add(phraseContentQuery, BooleanClause.Occur.SHOULD);

           TopDocs docs = searcher.Search(boolQuery, 1500);
           ScoreDoc[] hits = docs.scoreDocs;

Is it the right way?
Is there another way, without running two queries (simpleParsedQuery and
phraseContentQuery)?

Thanks!

Maxim

--
View this message in context: http://lucene.472066.n3.nabble.com/Searching-both-phrase-and-it-s-words-tp3992276.html
Sent from the Lucene - Java Users mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to