Dear Neal,

I appreciate so much for your help!

Even though I updated the code as follows, there are still no results
for the term-based search.

        ......
        IndexSearcher searcher = new IndexSearcher(fsDirectory);
        Term term = new Term(searchField, searchKeyword);
        TermQuery termQuery = new TermQuery(term);
        Hits results = searcher.Search(termQuery);
        ......

However, the Query search got results. The searchKeyword is just an
ordinary word, no any special characters, since I just want to learn
how to use Term to use.

Any particular requirements to generate the index? I can figure out
the problems.

Thanks so much!
LB


On Tue, Aug 25, 2009 at 2:37 AM, Granroth, Neal
V.<[email protected]> wrote:
>
> The difference in operation would be due to differences in the search 
> requested by the two sections of code.  What does searchKeyword contain?
> QueryParser may be splitting the string into multiple terms.
> The code shown for BooleanQuery will only work when searchKeyword is a single 
> term.  That is, it will search for the text specified as a single term.
>
>
> By the way, as the code shown for BooleanQuery only uses a single term, the 
> clause Occur.MUST or Occur.Should is unimportant.  For a single term there is 
> really no need for the BooleanQuery object at all, you could instead use the 
> TermQuery object directly in the call to Search()
>
>
> -- Neal
>
> -----Original Message-----
> From: Li Bing [mailto:[email protected]]
> Sent: Monday, August 24, 2009 1:12 PM
> To: [email protected]
> Cc: [email protected]
> Subject: Re: Query vs. BooleanQuery
>
> I tried. But it still doesn't work.
>
> Thanks so much!
> LB
>
> On Tue, Aug 25, 2009 at 1:20 AM, [email protected]<[email protected]> wrote:
>> It is due to :
>>
>> booleanQuery.Add(termQuery, BooleanClause.Occur.MUST);
>>
>> Change it to
>>
>> booleanQuery.Add(termQuery, BooleanClause.Occur.SHOULD);
>>
>> and you'll see same results.
>>
>>
>> Li Bing:
>>>
>>> Dear all,
>>>
>>> (The codes in the previous email have something specific in my
>>> applications. I made changes in this email)
>>>
>>> I tried to search using two approaches, Query and BooleanQuery. To my
>>> surprise, the two behaves different on the same index? Or I made
>>> something wrong?
>>>
>>> On the same index, Query can get results whereas BooleanQuery get NOTHING.
>>> Why?
>>>
>>> The codes are shown as follows.
>>>
>>> Using Query,
>>>
>>>       ......
>>>       IndexSearcher searcher = new IndexSearcher(fsDirectory);
>>>       Analyzer chineseAnalyzer = new ChineseAnalyzer();
>>>       QueryParser queryParser = new QueryParser(searchField,
>>> chineseAnalyzer);
>>>       Query query = queryParser.Parse(searchKeyword);
>>>       Hits results = searcher.Search(query);
>>>       ......
>>>
>>> Using BooleanQuery,
>>>
>>>       ......
>>>       IndexSearcher searcher = new IndexSearcher(fsDirectory);
>>>       Term term = new Term(searchField, searchKeyword);
>>>       TermQuery termQuery = new TermQuery(term);
>>>       BooleanQuery booleanQuery = new BooleanQuery();
>>>       booleanQuery.Add(termQuery, BooleanClause.Occur.MUST);
>>>       Hits results = searcher.Search(booleanQuery);
>>>       ......
>>>
>>> I think the codes should be correct. But why do they get different
>>> results on the same index?
>>>
>>> Thanks so much for your help!
>>> LB
>>>
>>>
>>>
>>
>>
>

Reply via email to