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