SOLR Case Insensitive Search

前端 未结 5 1582
春和景丽
春和景丽 2020-12-15 07:10

I\'ve a problem in SOLR Search.
I have a data like this:
\"enter

I use solr a

相关标签:
5条回答
  • 2020-12-15 07:39

    instead of type="string" define the field type="text_general" (as defined in the default schema.xml). On eof its property is ignore case=true

    0 讨论(0)
  • 2020-12-15 07:40

    The address_s field should be defined as -

    <field name="address_s" type="c_text" indexed="true" stored="true"/>
    

    If you are using the default schema.xml, this defination should come before -

    <dynamicField name="*_s"  type="string"  indexed="true"  stored="true"/>
    

    which defines it as a string field type with no analysis performed.

    Wildcard queries does not undergo analysis.
    So if you apply lower case filter at index time query address_s:*nadi* would work.
    However, query address_s:*Nadi* would not, as Nadi will not match nadi in index and you would need to lower case the queries at client side.

    0 讨论(0)
  • 2020-12-15 07:46

    I have used something like this ... In schema.xml i 've put a new fieldType

    <fieldType name="newType" class="solr.TextField" positionIncrementGap="100">
          <analyzer type="index">
            <tokenizer class="solr.KeywordTokenizerFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.ReversedWildcardFilterFactory" />
          </analyzer>
          <analyzer type="query">
            <tokenizer class="solr.KeywordTokenizerFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.ReversedWildcardFilterFactory" />
          </analyzer>
     </fieldType>
    

    Assign the new type to the field that you want to make it case & whitespace insensitive Then you have to construct the solr query in the form : fieldName:(*fieldValue\ *)

    0 讨论(0)
  • 2020-12-15 07:54

    I've used this as field type:

    <fieldType name="string" class="solr.TextField">
      <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>
    

    And defined my fields using:

    <field name="address" type="string" indexed="true" stored="true"/>
    

    The result: My document returns the fields in the right case (like inserted) and I can search case-insensitive (using both upper- and lowercase letters)...

    Version: Solr 3.6

    0 讨论(0)
  • 2020-12-15 07:59

    Does your address_s field use this c_text field type in your schema.xml?

    If your index has been created with the previous configuration, you need to re-index everything to take the changes into account.

    0 讨论(0)
提交回复
热议问题