1、types標簽下加入如下fieldType
<fieldType name="str_lower" class="solr.TextField" sortMissingLast="true" omitNorms="true">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
2、fields標簽下自定義field的type改為str_lower即可解決
<field name="en_name" type="str_lower" indexed="true" stored="true"/>
java調用傳參不區分大小寫,皆可查詢到結果
solr查詢string類型時,有時需要使之不區分大小寫( case insensitive),這時,就需要重新定義數據類型: 如統一轉化為小寫進行查詢:
1
2
3
4
5
6
7
8
|
<
fieldType
name
=
"string_ci"
class
=
"solr.TextField"
sortMissingLast
=
"true"
omitNorms
=
"true"
>
<
analyzer
>
<
tokenizer
class
=
"solr.KeywordTokenizerFactory"
/>
<
filter
class
=
"solr.LowerCaseFilterFactory"
/>
</
analyzer
>
</
fieldType
>
<
field
name
=
"code"
type
=
"string_ci"
indexed
=
"true"
stored
=
"true"
/>
|
因string類型為值是可不變的,因此此次使用TextField (string field type for fields that contain structured values that shouldn’t be altered in any way)
注意:上面string_ci類型的field如果做facet時,得到的值將都是小寫的,可能不符合實際需求。 因此,如果需要facet,需使用copyField再定義一個string類型的字段。 如:
1
2
3
|
<field name=
"code_cp"
type=
"string"
indexed=
"true"
stored=
"false"
/>
<copyField source=
"code"
dest=
"code_cp"
/>
|
對code_cp進行facet則行。
solr忽略大小寫配置,在schema.xml中,對
<filterclass="solr.xxxxx" ignoreCase="true"expand="true"/>
中,對ignoreCase進行配置,如果為true,表示轉化為小寫匹配,及忽略大小寫