This won't quite work. "string" types are totally un-analyzed you
cannot add filters to a solr.StrField, you must use solr.TextField
rather than solr.StrField.


<fieldType name="string" class="solr.TextField" sortMissingLast="true"
docValues="true"/>
<analyzer>
      <tokenizer class="solr.KeywordTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
 </analyzer>
 </fieldType>


start over and re-index from scratch in a new collection of course.

You also need to make sure you really want to search on the whole
field. The KeywordTokenizerFactory doesn't split the incoming test up
_at all_. So if the input is
"my dog has fleas" you can't search for just "dog" unless you use the
extremely inefficient *dog* form. If you want to search for words, use
an tokenizer that breaks up the input, WhitespaceTokenizer for
instance.

Best,
Erick

On Thu, Nov 9, 2017 at 3:24 AM, Amrit Sarkar <sarkaramr...@gmail.com> wrote:
> Behavior of the field values is defined by fieldType analyzer declaration.
>
> If you look at the managed-schema;
>
> You will find fieldType declarations like:
>
> <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
>> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/>
>> <filter class="solr.StopFilterFactory" words="lang/stopwords_en.txt"
>> ignoreCase="true"/> <filter class="solr.LowerCaseFilterFactory"/> <filter
>> class="solr.EnglishPossessiveFilterFactory"/> <filter class=
>> "solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> <filter
>> class="solr.PorterStemFilterFactory"/> </analyzer> <analyzer type="query">
>> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class=
>> "solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms=
>> "synonyms.txt"/> <filter class="solr.StopFilterFactory" words=
>> "lang/stopwords_en.txt" ignoreCase="true"/> <filter class=
>> "solr.LowerCaseFilterFactory"/> <filter class=
>> "solr.EnglishPossessiveFilterFactory"/> <filter class=
>> "solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> <filter
>> class="solr.PorterStemFilterFactory"/> </analyzer> </fieldType>
>
>
> In you case fieldType is "string". *You need to write analyzer chain for
> the same fieldType and don't include:*
>  <filter class="solr.LowerCaseFilterFactory"/>
>
> LowerCaseFilterFactory is responsible lowercase the token coming in query
> and while indexing.
>
> Something like this will work for you:
>
> <fieldType name="string" class="solr.StrField" sortMissingLast="true"
> docValues="true"/>
> <analyzer> <tokenizer class="solr.KeywordTokenizerFactory"/> </analyzer> </
> fieldType>
>
> I listed "KeywordTokenizerFactory" considering this is string, not text.
>
> More details on: https://lucene.apache.org/solr/guide/6_6/analyzers.html
>
> Amrit Sarkar
> Search Engineer
> Lucidworks, Inc.
> 415-589-9269
> www.lucidworks.com
> Twitter http://twitter.com/lucidworks
> LinkedIn: https://www.linkedin.com/in/sarkaramrit2
> Medium: https://medium.com/@sarkaramrit2
>
> On Thu, Nov 9, 2017 at 4:41 PM, Karan Saini <maximus...@gmail.com> wrote:
>
>> Hi guys,
>>
>> Solr version :: 6.6.1
>>
>> *<field name="NameLine1" type="string" indexed="true" stored="true" />*
>>
>> I have around 10 fields in my core. I want to make the search on this
>> specific field to be case sensitive. Please advise, how to introduce case
>> sensitivity at the field level. What changes do i need to make for this
>> field ?
>>
>> Thanks,
>> Karan
>>

Reply via email to