设为首页 收藏本站
查看: 963|回复: 0

[经验分享] solr 字段配置,和数据库数据索引配置

[复制链接]

尚未签到

发表于 2016-12-16 08:40:33 | 显示全部楼层 |阅读模式
  配置solr字段、
  schema.xml
文件里配置
  先讲解一下,里面的一些字段
  1、

<types> ...  </types> 表示类型,数据类型

<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/>
<fieldtype name="binary" class="solr.BinaryField"/>
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
<fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
<fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>

   不难理解上面就是配置定义solr  数据类型、上面都是solr里面的类型,那么我们也可以配置自已的数据类型,
  比如:我们要用到中文分词

的时候,这里配一下IKanalyzer

分词 、并配置它的索引和分词。

<fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100">
<!--<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> -->
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="false"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">  
<tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="false" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>  
</fieldType>


   小解释一下field 里面的一些属性:

name:    字段类型名  
class:    java类名  
indexed:    缺省true。 说明这个数据应被搜索和排序,如果数据没有indexed,则stored应是true。  
stored:    缺省true。说明这个字段被包含在搜索结果中是合适的。如果数据没有stored,则indexed应是true。  
sortMissingLast:    指没有该指定字段数据的document排在有该指定字段数据的document的后面  
sortMissingFirst:    指没有该指定字段数据的document排在有该指定字段数据的document的前面  
omitNorms:    字段的长度不影响得分和在索引时不做boost时,设置它为true。一般文本字段不设置为true。  
termVectors:    如果字段被用来做more like this 和highlight的特性时应设置为true。  
compressed:    字段是压缩的。这可能导致索引和搜索变慢,但会减少存储空间,只有StrField和TextField是可以压缩,这通常适合字段的长度超过200个字符。  
multiValued:    字段多于一个值的时候,可设置为true。  
positionIncrementGap:    和multiValued
一起使用,设置多个值之间的虚拟空白的数量

  2、<fields> ... </fields> 配的是文档字段




   <field name="id" type="string" indexed="true" stored="true" required="true" />
<field name="sku" type="text_en_splitting_tight" indexed="true" stored="true" omitNorms="true"/>
<field name="name" type="text_general" indexed="true" stored="true"/>
<field name="alphaNameSort" type="alphaOnlySort" indexed="true" stored="false"/>
<field name="manu" type="text_general" indexed="true" stored="true" omitNorms="true"/>
  name:字段的名字。  

type:字段的类型。  

default:一般用来记录索引的时间。  

required:设置为true时,当字段没有值,则solr会索引文档失败。
  multiValued:是否多值
  termVectors
  termPositions
  termOffsets
  动态字段:



   <dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/>
<dynamicField name="*_s"  type="string"  indexed="true"  stored="true"/>
<dynamicField name="*_l"  type="long"   indexed="true"  stored="true"/>
<dynamicField name="*_t"  type="text_general"    indexed="true"  stored="true"/>
  文档的动态字段、
  添加文档时,字段以_i

结尾的将将被solr收录 、、solr支持通配符 *

  唯一key 
必须为string

<uniqueKey>id</uniqueKey>
   默认搜索字段


<defaultSearchField>text</defaultSearchField>
  SolrQueryParser 默认处理

<solrQueryParser defaultOperator="OR"/>
   copyField



<copyField source="cat" dest="text"/>
<copyField source="name" dest="text"/>
<copyField source="manu" dest="text"/>
<copyField source="features" dest="text"/>
<copyField source="includes" dest="text"/>
<copyField source="manu" dest="manu_exact"/>
   字段cat

是文章的标题,字段text

是文章的摘要,
  字段ta是文章标题和摘要的联合。添加索引文档时,只需要传入cat

text

字段的内容,solr会自动索引ta字段。
  网上找了一个 solr 索引数据库的文章
  http://blog.csdn.net/christophe2008/article/details/6299225



利用SOLR从数据库创建索引

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-314925-1-1.html 上篇帖子: Solr Facet Field (Group by field) 下篇帖子: solr进阶: 如何定制搜索服务,扩展搜索逻辑
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表