If you are going to put explict phrase quotes in the query string like that, an ordinary text field will match fine, on phrase searches or other searches. That is a solr.TextField, not a solr.StrField as you're using. And then you can put a LowerCaseFilter on it of course. And use an ordinary tokenizer, whitespace or worddelimiter or what have you, not the non-tokenizing keywordtokenizer. Just an ordinary solr.TextField.
I've never been entirely sure what an indexed solr.StrField is good for exactly. Oh, facets, right. But it's not generally good for matching in an actual 'q', because it's not a tokenized field. Not sure what happens telling a StrField that isn't ever tokenized to use a KeywordTokenizerFactory, maybe it just ignores it, or maybe that's part of the problem. If you mean you only want it to match on _exact_ matches (rather than phrase matches), I haven't quite figured out how to do that, in a dismax query where you only want one field of many to behave that way. But for a single field query (in an fq, or as the only field in a standard query parser q), the "field" defType will do it. Although now I'm wondering if there is a way to trick a StrField into doing that. ________________________________________ From: Matt Mitchell [goodie...@gmail.com] Sent: Thursday, October 07, 2010 10:53 PM To: solr-user@lucene.apache.org Subject: case-insensitive phrase query for string fields What's the recommended approach for handling case-insensitive phrase queries? I've got this setup, but no luck: <fieldType name="ci_string" class="solr.StrField"> <analyzer> <filter class="solr.LowerCaseFilterFactory"/> <tokenizer class="solr.KeywordTokenizerFactory"/> </analyzer> </fieldType> So if I index a doc with a title of "Golden Master", then I'd expect a query of q=title:"golden master" to work, but no go... I know I must be missing something super obvious! Matt