So if you want to search a non-analyzed (non-tokenized) field, you should not use StandardAnalyzer, but something like KeywordAnalyzer?
On Tue, Jun 26, 2012 at 3:56 PM, Simon Svensson <[email protected]> wrote: > 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].**org<[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 < >> chandramohan.j.lingam@intel.**com <[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/<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 <http://screencast.com/t/NooMK2Rf> >>>>>> >>>>>> Thanks! >>>>>> >>>>> >>>>> >>>>> >>>>> >>>>> > >
