schema.xml
<?xml version="1.0" ?>
<schema name="testcore" version="1.5">
<types>
<fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
<!-- 原始 ik分词器 -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
</types>
<fields>
<!-- 业务字段 -->
<field name="id" type="string" indexed="true" stored="true" multiValued="false" />
<field name="sname" type="string" indexed="true" stored="true" multiValued="false" />
<field name="slocation" type="string" indexed="true" stored="true" multiValued="false" />
<field name="sdes" type="text_ik" indexed="true" stored="true" multiValued="false" />
<field name="sarea" type="string" indexed="true" stored="true" multiValued="false" />
<field name="spopulation" type="long" indexed="true" stored="true" multiValued="false" />
<!-- 多值字段 -->
<field name="smemo" type="text_ik" indexed="true" stored="true" multiValued="true" />
<!-- 拷贝字段 source和dest都支持通配符 -->
<copyField source="sname" dest="smemo" />
<copyField source="sarea" dest="smemo" />
<!-- 动态字段 -->
<dynamicField name="exts_l_*" type="long" indexed="true" stored="true" multiValued="false" />
<dynamicField name="exts_s_*" type="string" indexed="true" stored="true" multiValued="false" />
<dynamicField name="exts_t_*" type="text_ik" indexed="true" stored="true" multiValued="false" />
<field name="exts" type="text_ik" indexed="true" stored="true" multiValued="true"/>
<copyField source="exts_l_*" dest="exts"/>
<copyField source="exts_s_*" dest="exts"/>
<copyField source="exts_t_*" dest="exts"/>
<!-- general -->
<field name="name" type="string" indexed="true" stored="true" multiValued="false" />
<field name="type" type="string" indexed="true" stored="true" multiValued="false" />
<field name="_version_" type="long" indexed="true" stored="true"/>
</fields>
<!-- field to use to determine and enforce document uniqueness. -->
<uniqueKey>id</uniqueKey>
<!-- field for the QueryParser to use when an explicit fieldname is absent -->
<defaultSearchField>name</defaultSearchField>
<!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
<solrQueryParser defaultOperator="OR"/>
</schema>
上面schema.xml定义了:
- 将field字段sname,sarea拷贝到多值字段smemo中
- 将dynamicField字段exts_l_*,exts_s_*,exts_l_*拷贝到多值字段exts中
field
- 有明确定义的普通字段
dynamicField
- 不确定属性名字的字段
copyField
- 可以将field字段拷贝到其他字段
- 可以将dynamicField字段拷贝到其他字段
- 可以将多个field字段拷贝到多值字段
- 可以将多个dynamicField字段拷贝到多值字段
插入文档
{
"id":"100",
"sname":"西班牙",
"sarea":"欧洲",
"slocation":"欧洲",
"exts_l_l":10000,
"exts_s_s":"皇家马德里",
"exts_t_t":"巴萨罗那"
}
查询文档
{
"responseHeader": {
"status": 0,
"QTime": 36
},
"response": {
"numFound": 1,
"start": 0,
"maxScore": 1.9162908,
"docs": [
{
"id": "100",
"sname": "西班牙",
"smemo": [
"西班牙",
"欧洲"
],
"sarea": "欧洲",
"slocation": "欧洲",
"exts_l_l": 10000,
"exts": [
"10000",
"皇家马德里",
"巴萨罗那"
],
"exts_s_s": "皇家马德里",
"exts_t_t": "巴萨罗那",
"_version_": 1658402136111710200
}
]
}
}