关于solr schema.xml 的配置网上教程有很多,作者我的简单说下最近编程使用到的一些技巧
field 属性
<field name="_version_" type="long" indexed="true" stored="true" multiValued="false"/>
表示确切的日段,属性名 name 不可以用通配符去匹配 type 表示类型 有点类似于 java 的string ,int,float,double等,只要跟JAVA的类型对应上就行,还有一些类型就是可能是你定义的分词器 例如text_ik ik分词器,庖丁解牛等自定义的分词器类型
eg:
- <fieldType name="text_ik" class="solr.TextField">
- <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
- </fieldType>
indexed 表示是否被索引,通俗来说 就是这个字段可否被作为关键字搜索
stored 表示是否储存 也就是在core上是否显示这个数据 或被检索出数据来 可根据情况设值
multiValued 这个值 表示是否允许多个值,除非是该field 存放的 集合的,一般都设置为false,一般刚入门的小伙伴都不知道这个值是干嘛用的,
通俗来说,如果你想这个放多个字符串的集合,就要将这个值设置为true.
copyfield
<fields>
5. <field name="title" type="text" indexed="true" stored="false" />
6. <field name="content" type="text" indexed="true" stored="false" />
8. <field name="tc" type="text" indexed="true" stored="false" multiValued="true"/>
10. </fields>
11. <copyField source="title" dest="tc" />
12. <copyField source="content" dest="tc" />
copyField 一般是用来 存放多个域的 比如你可能搜索的时候需要用到 商品名字 goodsname 和 商品简介 goodsintro 来共同作为搜索,那好 这时 copyField 这个属性 就派上用场了,起到了整合多个域的作用。例子可参照上面的写,multiValued要设置为 true
<
dynamicField
name
=
"Param*"
type
=
"int"
indexed
=
"true"
stored
=
"true"
/>
动态域名 可用通配符匹配你想要的存放的域 比如现在定义了Param* ,其中*号是通配符,起到可以将 param1,或者parama,前缀一样域匹配到这个域上
起到跟field一样的作用,只是这个是动态的。
关于solrj 的使用
在网上有很多关于 solrj的使用 ,最近一段时间的学习,就拿几个连接与大家分享下