Luke using keyword analyzer as default makes sense. However, in the original 
post, there was a link to luke output screenshot which showed that standard 
analyzer was in use for query parsing. 

-----Original Message-----
From: Simon Svensson [mailto:[email protected]] 
Sent: Tuesday, June 26, 2012 2:56 PM
To: [email protected]
Subject: Re: SPAM-HIGH: Disparity between API usage and Luke

Luke defaults to KeywordAnalyzer which wont change your term in any way. 
The QueryParser will still break up your query, so "Name:Jack Bauer" 
would become (Name:Jack DefaultField:Bauer). I believe you can have per-field 
analyzers (KeywordAnalyzer for Id, StandardAnalyzer for everything else) using 
a PerFieldAnalyzerWrapper.

On 2012-06-26 23:06, Lingam, ChandraMohan J wrote:
> QueryParser has no knowledge of how data was indexed.  For your scenario, I 
> don't believe you would be able to use Query Parser with standard analyzer 
> when data was originally indexed with Field.Index.NOT_ANALYZED option.
>
> Interesting question is why is luke working/finding the match?  I would have 
> expected Luke to not find any matches.
>
>
> -----Original Message-----
> From: Rob Cecil [mailto:[email protected]]
> Sent: Tuesday, June 26, 2012 12:54 PM
> To: [email protected]
> Subject: Re: SPAM-HIGH: Disparity between API usage and Luke
>
> I can definitely try that. I just expected QueryParser would respect the case 
> of the source string. I was hoping to avoid using the Query API per-se, and 
> just let the parser to the work for me.
>
> On Tue, Jun 26, 2012 at 1:19 PM, Lingam, ChandraMohan J < 
> [email protected]> wrote:
>
>>>> var query = _parser.Parse("Id:BAUER*");
>> In your code, most likely, the value got converted to lower case (i.e.
>> bauer*) by the parse statement.
>> Whereas indexed value is in upper case as it is not analyzed (from 
>> screen shot).
>>
>> Can you explicitly try using prefix query?
>>
>>
>>
>>> Same results, apparently, when I use Luke 1.0.1.
>>>
>>> When I search for "Id:BAUER*" I get 15 hits in Luke, but in my 
>>> custom app, zero.
>>>
>>> On Tue, Jun 26, 2012 at 12:31 PM, Rob Vesse <[email protected]>
>> wrote:
>>>> You appear to be using Luke 3.5 which per the information on the 
>>>> Luke homepage (http://code.google.com/p/luke/) uses Lucene 3.5
>>>>
>>>> Since Lucene.Net is currently on 2.9.4 I wouldn't be surprised to 
>>>> see different behavior between the API and executing in Luke.
>>>>
>>>> If you use a version of Luke which more closely aligns with the 
>>>> version
>>> of
>>>> Lucene.Net (Luke 1.0.1 uses Lucene 3.0.1 which should be close 
>>>> enough since the 2.9.x releases were previews of the 3.0.x releases 
>>>> as I understood it) what behavior do you see?
>>>>
>>>> Hope this helps,
>>>>
>>>> Rob
>>>>
>>>> On 6/26/12 10:50 AM, "Rob Cecil" <[email protected]> wrote:
>>>>
>>>>> If I run a query against my index using QueryParser to query a field:
>>>>>
>>>>>                 var query = _parser.Parse("Id:BAUER*");
>>>>>                 var topDocs = searcher.Search(query, 10);
>>>>>                 Assert.AreEqual(count, topDocs.TotalHits);
>>>>>
>>>>> I get 0 for my TotalHits, yet in Luke, the same query phrase 
>>>>> yields
>>>>> 15 results, what am I doing wrong? I use the StandardAnalyzer both 
>>>>> to create the index and to query.
>>>>>
>>>>> The field is defined as:
>>>>>
>>>>> new Field("Id", myObject.Id, Field.Store.YES,
>>>>> Field.Index.NOT_ANALYZED)
>>>>>
>>>>> and is a string field. The result set back from Luke looks like
>>>>> (screencap):
>>>>>
>>>>> http://screencast.com/t/NooMK2Rf
>>>>>
>>>>> Thanks!
>>>>
>>>>
>>>>
>>>>


Reply via email to