lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chris Hostetter <hossman_luc...@fucit.org>
Subject Re: all stop words in exact phrase get 0 hits
Date Mon, 19 Dec 2005 19:14:13 GMT

: > I have moved from my approach:
: > Query query = QueryParser.parse("big lucene expression", "afield",
: > LuceneHelper.getAnalyzer());
: >
: > to building the query based on BooleanQuery, PhareQuery, TermQuery
: > etc...But before the analyzer was doing a bunch of work in my incoming
: > words, and I dont see an easy way to do the same sort of stuff to the
: > incoming  words used in PhareQuery, TermQuery etc.

In addition to Erik's suggestion, something that i find frequently makes
sense is to use the QueryParser in each case where you are dealing with a
discrete "input string" -- and then combine them into a BooleanQuery
(along with any other progromatically generated TermQueries you might want
for other reasons)

For example, it looks like your applciation is targeted at searching email
right?  let's assume your application allows the user to specify the
following inputs

    * a text box for search words
    * a text box for people's names/email
    * pulldowns for picking date ranges

...and you want to look in the subject, body, and attachment fields for
the input words (with differnet boosts) and in all of the header fields
for the name/email input.   you can builda Date object out of the pulldown
yourself, and then do something like this with the two strings...

   QueryParser subP = new QueryParser("subject",SomeAnalyzer)
   QueryParser bodyP = new QueryParser("body",SomeAnalyzer)
   QueryParser attachP = new QueryParser("attachemnts",SomeAnalyzer)
   QueryParser headP = new QueryParser("headers",AnalyzerThatKnowsAboutEmailAddress)
   Query s = subP.parse(words);
   s.setBoost(2.0)
   Query b = bodyP.parse(words);
   Query a = attachP.parse(words);
   a.setBoost(0.5)
   Query h = headP.parse(person);
   h.setBoost(1.5)
   BooleanQuery bq = new BooleanQuery();
   bq.add(s,false,false);
   bq.add(b,false,false);
   bq.add(a,false,false);
   bq.add(h,false,false);

...and then execute your search using a filter built from the date range
pulldowns.


-Hoss


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


Mime
View raw message