FAQ
I have an index with both fields that are case sensitive and insensitive. I
am trying to use a QueryParser to accept query from end users for
searching. The default behavior of QueryParser is to lowercase the prefix
text to create the PrefixQuery. So wildcard search on the case sensitive
fields does not work. If I use QueryParser.setLowercaseWildcardTerm(false),
then wildcard search on the case insensitive fields does not work.

Here is an example with two fields, name (case sensitive) and desc (case
insensitive). The docment is

name (case sensitive): PowerBook
desc (case insensitive): professional mac laptop

I want to be able to find the document with the following query:

+name:Power* +field:Pro*

Bill

Search Discussions

  • Erick Erickson at May 5, 2007 at 12:01 am
    Look at PerFieldAnalyzerWrapper. It allows you to use different
    analyzers on different fields during the query parsing phase.

    But I wouldn't go there if you don't have to. I suspect you'll spend a
    LOT of time tracking down errors in your use of a mixed case index.
    If for no other reason than your users will use the "wrong" case.

    Unless your index is huge (and I don't consider, say, 8G huge), I'd
    index everything in, say, lower case. And ditto for your query
    parsing.

    If you need to return data to the user in mixed case, then you can
    *store* (but perhaps not *index*) the display fields. So you search
    on one field and return data from another.

    Best
    Erick
    On 5/4/07, Bill Au wrote:

    I have an index with both fields that are case sensitive and
    insensitive. I
    am trying to use a QueryParser to accept query from end users for
    searching. The default behavior of QueryParser is to lowercase the prefix
    text to create the PrefixQuery. So wildcard search on the case sensitive
    fields does not work. If I use QueryParser.setLowercaseWildcardTerm
    (false),
    then wildcard search on the case insensitive fields does not work.

    Here is an example with two fields, name (case sensitive) and desc (case
    insensitive). The docment is

    name (case sensitive): PowerBook
    desc (case insensitive): professional mac laptop

    I want to be able to find the document with the following query:

    +name:Power* +field:Pro*

    Bill
  • Bill Au at May 7, 2007 at 3:23 am
    Erick,
    Thanks for the advice. I will take a look at
    PerFieldAnalyzerWrapper to see if I want to take this on. For my
    case, I have to use mexed case for a couple of fields since case
    really does matter for them (ie apple is not the same as Apple), and I
    actually don't want users to find the document if they enter the
    "wrong" case (ie a search for Apple should not return docs containing
    apple).

    Bill
    On 5/4/07, Erick Erickson wrote:
    Look at PerFieldAnalyzerWrapper. It allows you to use different
    analyzers on different fields during the query parsing phase.

    But I wouldn't go there if you don't have to. I suspect you'll spend a
    LOT of time tracking down errors in your use of a mixed case index.
    If for no other reason than your users will use the "wrong" case.

    Unless your index is huge (and I don't consider, say, 8G huge), I'd
    index everything in, say, lower case. And ditto for your query
    parsing.

    If you need to return data to the user in mixed case, then you can
    *store* (but perhaps not *index*) the display fields. So you search
    on one field and return data from another.

    Best
    Erick
    On 5/4/07, Bill Au wrote:

    I have an index with both fields that are case sensitive and
    insensitive. I
    am trying to use a QueryParser to accept query from end users for
    searching. The default behavior of QueryParser is to lowercase the prefix
    text to create the PrefixQuery. So wildcard search on the case sensitive
    fields does not work. If I use QueryParser.setLowercaseWildcardTerm
    (false),
    then wildcard search on the case insensitive fields does not work.

    Here is an example with two fields, name (case sensitive) and desc (case
    insensitive). The docment is

    name (case sensitive): PowerBook
    desc (case insensitive): professional mac laptop

    I want to be able to find the document with the following query:

    +name:Power* +field:Pro*

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

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupjava-user @
categorieslucene
postedMay 4, '07 at 7:18p
activeMay 7, '07 at 3:23a
posts3
users2
websitelucene.apache.org

2 users in discussion

Bill Au: 2 posts Erick Erickson: 1 post

People

Translate

site design / logo © 2022 Grokbase