lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eric Isakson" <Eric.Isak...@sas.com>
Subject RE: Searches containing a dollar sign $
Date Thu, 18 Mar 2004 19:06:23 GMT
I think Erik Hatcher commented on a similar problem the other day. When QueryParser handles
a * query which it creates as a prefix query, the token the prefix query is built from is
not analyzed.

StandardAnalyzer would turn abc$def into two tokens "abc" and "def"

QueryParser would take query 2 and build a PrefixQuery with "abc" as the prefix and query
3 as a PrefixQuery with "abc$" as the prefix.

There are probably a million valid reasons why this is appropriate default behavior for QueryParser.
One off the top of my head is that with a stemming analyzer, you may not get an approriate
stem if you analyzed the prefix. In this case, if this is not appropriate behavior for your
application, you should probably create a custom query parser with different behavior.

Eric

Here is the snip of QueryParser.jj that builds the query objects. The only one that is analyzed
is the field query. The term productions generally break on whitespace and special unescaped
query operators (see the .jj file for the full details):

       term=<TERM>
       | term=<PREFIXTERM> { prefix=true; }
       | term=<WILDTERM> { wildcard=true; }
       | term=<NUMBER>
     )
     [ <FUZZY> { fuzzy=true; } ]
     [ <CARAT> boost=<NUMBER> [ <FUZZY> { fuzzy=true; } ] ]
     {
       String termImage=discardEscapeChar(term.image);
       if (wildcard) {
       q = getWildcardQuery(field, termImage);
       } else if (prefix) {
         q = getPrefixQuery(field,
           discardEscapeChar(term.image.substring
          (0, term.image.length()-1)));
       } else if (fuzzy) {
         q = getFuzzyQuery(field, termImage);
       } else {
         q = getFieldQuery(field, analyzer, termImage);
       }
     }

-----Original Message-----
From: Otis Gospodnetic [mailto:otis_gospodnetic@yahoo.com] 
Sent: Thursday, March 18, 2004 11:44 AM
To: Lucene Users List
Subject: Re: Searches containing a dollar sign $


Are you indexing your documents with the same Analyzer?
Are you using QueryParser?
Are you able to get query 3) to work when using queries directly, without a QueryParser?

Otis

--- Reece <reecewilton2@yahoo.com> wrote:
> Hi,
> 
> I have a field that has a dollar sign in it like this:
>   abc$def
> 
> I perform the following queries using the
> StandardAnalyzer:
> 
> 1). myField:abc$def - work
> 2). myField:abc*    - work
> 3). myField:abc$*   - no work
> 
> Why doesn't the third query work?  Is there an
> analyzer that will handle all three of these queries?
> 
> Thanks,
> Reece
> 
> __________________________________
> Do you Yahoo!?
> Yahoo! Mail - More reliable, more storage, less spam 
> http://mail.yahoo.com
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: lucene-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: lucene-user-help@jakarta.apache.org
> 


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


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


Mime
View raw message