: On SOLR3.6, I defined a string_ci field like this: : : <fieldType name="string_ci" class="solr.TextField" : sortMissingLast="true" omitNorms="true"> : <analyzer> : <tokenizer class="solr.KeywordTokenizerFactory"/> : <filter class="solr.LowerCaseFilterFactory"/> : </analyzer> : </fieldType> : : <field name="pn" type="string_ci" multiValued="false" indexed="true" : required="true" stored="true"/>
I'm really suprised that field would have worked for you (reliably) as a uniqueKey field even in Solr 3.6. the best practice for something like what you describe has always (going back to Solr 1.x) been to use a copyField to create a case insensitive copy of your uniqueKey for searching. if, for some reason, you really want case insensitve *updates* (so a doc with id "foo" overwrites a doc with id "FOO" then the only reliable way to make something like that work is to do the lowercassing in an UpdateProcessor to ensure it happens *before* the docs are distributed to the correct shard, and so the correct existing doc is overwritten (even if you aren't using solr cloud) -Hoss http://www.lucidworks.com/