lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Uwe Schindler" <...@thetaphi.de>
Subject RE: Lucene fields not analyzed
Date Tue, 09 Feb 2010 07:35:46 GMT
QueryParser uses the given Analyzer when constructing they query, so it will never hit a NOT_ANALYZED
term. In general, it is a bad idea to use QueryParser on fields that are not analyzed. There
are two possibilities to solve the problem:

- Instantiate the query to match the not-analyzed (but indexed field) directly as a TermQuery.
- Use a PerFieldAnalyzerWrapper and choose a specific analyzer for this field that does not
touch your names (e.g. KeywordAnalyzer). Use this wrapped analyzer for the both searching
an indexing (and use Field.Index.ANALYZED!).

Uwe

-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: uwe@thetaphi.de

> -----Original Message-----
> From: Rohit Banga [mailto:iamrohitbanga@gmail.com]
> Sent: Tuesday, February 09, 2010 8:27 AM
> To: java-user@lucene.apache.org
> Subject: Lucene fields not analyzed
> 
> Hello
> 
> i have a field that stores names of people. i have used the
> NOT_ANALYZED
> parameter to index the names.
> 
> this is what happens during indexing
> 
>     doc.add(new Field("name", "\"" + name + "\"", Field.Store.YES,
> Field.Index.NOT_ANALYZED));
> 
> 
> 
> when i search it, i create a query parser using standardanalyzer and
> append
> ~0.5 to the search query.
> 
> the problem is that if the indexed name is "Mr. Kumar", my search does
> not
> work for "Mr. Kumar" while it does work for "Mr.Kumar" (without the
> space).
> 
> // searching code
>         File index_directory = new File(INDEX_DIR_PATH);
>         IndexReader reader =
> IndexReader.open(FSDirectory.open(index_directory), true);
>         Searcher searcher = new IndexSearcher(reader);
> 
>         Analyzer analyzer = new
> StandardAnalyzer(Version.LUCENE_CURRENT);
> 
>         QueryParser parser = new QueryParser(Version.LUCENE_CURRENT,
> "name",
> analyzer);
> 
>         Query query;
>         query = parser.parse(text + "~0.5");
> 
> how to make it work?
> 
> Rohit Banga


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Mime
View raw message