lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "prabin meitei" <prabin.mei...@gmail.com>
Subject Re: Grouping of Boolean opeartors in Lucene..?
Date Wed, 12 Nov 2008 04:12:45 GMT
Hi,
   You can use Boolean query for the same.
Boolean query is meant for having a series of queries with boolean operators
defined.
For eg.
  lets say you have 3 diff queries A, B, C and you want a final query which
behaves as  A && (B || C)
BooleanQuery query = new BooleanQuery();
BooleanQuery temp = new BooleanQuery();
temp.add(B, Occur.SHOULD); //Occur.SHOULD is equvalent to OR operator
temp.add(C, Occur.SHOULD);
query.add(A, Occur.MUST); //Occur.MUST is equivalent to an AND operator
query.add(temp, Occur.Must);

Now "query" = A && (B || C)

Go through lucene documentation about Boolean query

Hope it helps.

Prabin


On Wed, Nov 12, 2008 at 8:56 AM, Santosh Urs <santoshurs@gmail.com> wrote:

>
> How can i use multiple Boolean operators in a search query.?
>
> For example , from the search text field , i usually get the queries which
> looks like
>
> Any (word or phrase) and ( a list of URI's)
> example::   rice land  http\://www.wtr.org/wordlist#c_2379
> http\://www.wtr.org/wordlist#c_65748 http\://www.wtr.org/wordlist#c_7612
> here the search term or phrase is = rice land
> URIs are= http\://www.wtr.org/wordlist#c_2379
> http\://www.wtr.org/wordlist#c_65748 http\://www.wtr.org/wordlist#c_7612
>
> Now the way i want to build the Query is::
>
> rice land AND ( http\://www.wtr.org/wordlist#c_2379 OR
> http\://www.wtr.org/wordlist#c_65748 OR http\://
> www.wtr.org/wordlist#c_7612
> )
>
> i tried this-
>
> try {
>        if (queryString != null && fields != null) {
>                  PerFieldAnalyzerWrapper perFieldAnalyzer =
>                                        new
> PerFieldAnalyzerWrapper(analyzer);
>                perFieldAnalyzer.addAnalyzer("conceptURI", new
> KeywordAnalyzer());
>
> MultiFieldQueryParser mfqp = new MultiFieldQueryParser(
>                                                fields, perFieldAnalyzer);
> if (queryString.contains("http") && !queryString.startsWith("http")) {
>
> String orgQuery =queryString.substring(0, queryString.indexOf("http"));
>                                        String
> uri=queryString.substring(queryString.indexOf("http"),
> queryString.length());
>
> uri = uri.trim();
>                                        String[] uris = uri.split(" ");
>                                        String tempUri="";
>                                        for (int i = 0; i < uris.length;
> i++) {
>                                                if(i== uris.length-1){
>                                                        tempUri =  tempUri +
> uris[i];
>                                                }else {
>                                                        tempUri =  tempUri +
> uris[i]+QueryParser.OR_OPERATOR;
>                                                }
>                                        }
>
> query = mfqp.parse(orgQuery+ QueryParser.AND_OPERATOR+ tempUri );
>
>
>
>  is this is the correct way to  form a Query..?? Are there any other
> methods?
>
> --
> View this message in context:
> http://www.nabble.com/Grouping-of-Boolean-opeartors-in-Lucene..--tp20453434p20453434.html
> Sent from the Lucene - Java Users mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message