我现在使用的是一个已经搭建好的solr环境下进行的测试:
第一步,需要配置solrhome中的一个配置文件schema.xml
配置内容如下,上面配置的是IK分词器,下面是配置完成的域.
因为我在这个需要使用的solr进行全文检索的只有这几个重要的字段.
然后内容如下:
<!-- IKAnalyzer--> <fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> <!--IKAnalyzer Field--> <field name="content_ik" type="text_ik" indexed="true" stored="true" /> <!--product--> <field name="product_name" type="text_ik" indexed="true" stored="true"/> <field name="product_price" type="float" indexed="true" stored="true"/> <field name="product_description" type="text_ik" indexed="true" stored="false" /> <field name="product_picture" type="string" indexed="false" stored="true" /> <field name="product_catalog_name" type="string" indexed="true" stored="true" /> <!--关键词 增加搜索范围 商品名称商品描述--> <field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/> <copyField source="product_name" dest="product_keywords"/> <copyField source="product_description" dest="product_keywords"/> <field name="item_goodsid" type="long" indexed="true" stored="true"/> <field name="item_title" type="text_ik" indexed="true" stored="true"/> <field name="item_price" type="double" indexed="true" stored="true"/> <field name="item_image" type="string" indexed="false" stored="true" /> <field name="item_category" type="string" indexed="true" stored="true" /> <field name="item_seller" type="text_ik" indexed="true" stored="true" /> <field name="item_brand" type="string" indexed="true" stored="true" /> <field name="item_updatetime" type="date" indexed="true" stored="true" /> <!--复制域--> <field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/> <copyField source="item_title" dest="item_keywords"/> <copyField source="item_category" dest="item_keywords"/> <copyField source="item_seller" dest="item_keywords"/> <copyField source="item_brand" dest="item_keywords"/> <!--当我们需要动态扩充字段时,我们需要使用动态域--> <dynamicField name="item_spec_*" type="string" indexed="true" stored="true" />
为什么要配置域?
域相当于数据库的表字段,用户存放数据,因此用户根据业务需要去定义相关的Field(域),一般来说,每一种对应着一种数据,用户对同一种数据进行相同的操作.
域的常用属性:
- name:指定域的名称
- type:指定域的类型
- indexed:是否索引
- stored:是否存储
- required:是否必须
- multiValued:是否多值
复制域的作用是什么?
复制域的作用在于将某一个Field中的数据复制到另一个域中.
动态域的作用是什么?
当我们需要动态扩充字段时,我们需要使用动态域.