: 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/

Reply via email to