Hi,
I think it makes sense if it returns zero records because you are using
BooleanClause.Occur.SHOULD for each field, it means the term "open" should
occurs in all fields. but when you specify the field name in your query you
limit searching through that mentioned field.

as stated in Lucene javadoc the usage is:

String[] fields = {"filename", "contents", "description"};
int[] flags = {MultiFieldQueryParser.NORMAL FIELD,
               MultiFieldQueryParser.REQUIRED FIELD,
               MultiFieldQueryParser.PROHIBITED FIELD,};
parse(query, fields, flags, analyzer);


--
Regards,
Mohammad Norouzi



On 2/14/07, Akbar Devani <[EMAIL PROTECTED]> wrote:

Hi,

I'm in need of your help.I was looking for how serach multiple fields
using Lucene,in one of the mailing list I found your solution
to the issue.

Its working perfectly but I need to pass query as field:query

If I pass only query its returing zero hits.

Below is code I'm using.

Please do help me out.

Thanking you,

Akbar Devani.





String fields [] = {"Name","Claim Update","Paid Indemnity","Paid
Expenses","O/S Indemnity","O/S Expenses",

                                    "Incurred"," Status","Date / Added
by","Name","Paid Premium","Estimated","Premium
Status","File","Detail","Comment","Comments" };



                        BooleanClause.Occur[] flags = new
BooleanClause.Occur[fields.length];



     Query query = null;

            try

            {

            for (int i =0 ; i < fields.length ; i++)

                        {

                        flags[i]=BooleanClause.Occur.SHOULD;



                        }

                        query = MultiFieldQueryParser.parse(expression,
fields, flags, new StandardAnalyzer());

            System.out.println("query:"+query.toString() );

            //Log pasted below





                         }

    catch (ParseException e)

    {

        log.error("Unable to make any sense of the query", e);

    }

//Searching

    try

            {



         IndexReader reader = IndexReader.open(ds.getRootPath
(SERVLET_INDEX));

         IndexSearcher searcher = new IndexSearcher(reader);

         Hits hits = searcher.search(query);









If I'm searching status:open its returing records where as if I'm
searching only open its returing zero.

Query Object Returned by MultiFieldQueryParser





query:open



Comment:open  Comments:open  Currency:open  Estimated
Premium:open  Outstanding Adjuster:open

Outstanding Expert:open  Outstanding Indemnity:open  Outstanding
Lawyers:open  Outstanding Other:op

en  Outstanding TPA:open  Paid Adjuster:open  Paid Expert:open  Paid
Ind:open  Paid Lawyers:open  Pa

id Movement Expert:open  Paid Other:open  Paid Premium:open  Paid
TPA:open  Paid movement adjusters:

open  Paid movement indemnity:open  Paid movement lawyers:open  Paid
movement other:open  Transactio

n reference:open  claim update:open  client:open  estimated
premium:open  incurred:open  name:open

o/s expenses:open  o/s indemnity:open  paid expenses:open  paid
indemnity:open  paid premium:open  p

lacing:open  producer:open  status:open






Reply via email to