[ 
https://issues.apache.org/jira/browse/LUCENENET-486?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13258600#comment-13258600
 ] 

Prescott Nasser commented on LUCENENET-486:
-------------------------------------------

We could potentially add a developer flag in the future if they want to flip 
the behavior. The behavior Bjorn is asking for has merit (as well as the 
current implementation).

Fix from Bjorn:

--- C:\Users\xyt\AppData\Local\Temp\AnkhSVN\3179\QueryParser.27919.cs 
20.04.2012  08:55:36
+++ C:\_VS.NET\se\Lucene-2_9_4\core\QueryParser\QueryParser.cs 17.04.2012  
12:25:02
        
                /// <summary> Factory method for generating a query (similar to
                /// <see cref="GetWildcardQuery" />). Called when parser parses 
an input term
                /// token that uses prefix notation; that is, contains a single 
'*' wildcard
                /// character as its last character. Since this is a special 
case
                /// of generic wildcard term, and such a query can be optimized 
easily,
                /// this usually results in a different query object.
                /// <p/>
                /// Depending on settings, a prefix term may be lower-cased
                /// automatically. It will not go through the default Analyzer,
                /// however, since normal Analyzers are unlikely to work 
properly
                /// with wildcard templates.
                /// <p/>
                /// Can be overridden by extending classes, to provide custom 
handling for
                /// wild card queries, which may be necessary due to missing 
analyzer calls.
                /// 
                /// </summary>
                /// <param name="field">Name of the field query will use.
                /// </param>
                /// <param name="termStr">Term token to use for building term 
for the query
                /// (<b>without</b> trailing '*' character!)
                /// 
                /// </param>
                /// <returns> Resulting <see cref="Query" /> built for the term
                /// </returns>
                /// <exception cref="ParseException">throw in overridden method 
to disallow
                /// </exception>
                public /*protected internal*/ virtual Query 
GetPrefixQuery(System.String field, System.String termStr)
                {
                        if (!allowLeadingWildcard && termStr.StartsWith("*"))
                                throw new ParseException("'*' not allowed as 
first character in PrefixQuery");
                        if (lowercaseExpandedTerms)
                        {
                                termStr = termStr.ToLower();
                        }
-                       Term t = new Term(field, termStr);
+         Term t = null;
+         TermQuery q = null;
+         try
+         {
+            q = GetFieldQuery(field, termStr) as TermQuery;
+         }
+         catch(Exception ex)
+         {
+         }
 
+         if (q != null)
+         {
+            t = new Term(field, q.GetTerm().text);
+         }
+         else
+         {
+            t = new Term(field, termStr);
+         }
                        return NewPrefixQuery(t);
                }
                
> Wildcard queries are not analyzed
> ---------------------------------
>
>                 Key: LUCENENET-486
>                 URL: https://issues.apache.org/jira/browse/LUCENENET-486
>             Project: Lucene.Net
>          Issue Type: Bug
>          Components: Lucene.Net Contrib, Lucene.Net Core
>    Affects Versions: Lucene.Net 2.9.2, Lucene.Net 2.9.4
>         Environment: Windows 7, Visual Studio 2010, .net 4.0
>            Reporter: Björn
>         Attachments: LuceneTest.zip
>
>
> The lucene 'QueryParser' doesn't analyze wildcard querys. The function 
> 'GetPrefixQuery'(QueryParser.cs) returns the string without any analyzation.
> I have performed some queries to show the problem. The analyzer is the 
> 'Contrib.Analyzers.DE.GermanAnalyzer'
> ---------- indexed word: 'Häuser'; in the index stemmed as: 'hau' ----------
> query: Hau*; hit: yes
> query: Hause*; hit: no; This should be a hit.....
> ---------- indexed word: 'Angebote'; in the index stemmed as: 'angebo' 
> ----------
> query: Angebo*; hit: yes
> query: Angebot*; hit: no; This should be a hit.....
> query: Angebote*; hit: no; This should be a hit.....
> ---------- indexed word: 'Björn'; in the index stemmed as: 'bjor' ----------
> query: Bjor*; hit: yes
> query: Björ*; hit: no; This should be a hit.....

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to