solr配置域(2)简单介绍配置文件

1文档和域的理解

1.1:域相当于数据库中的表的字段,一条sku数据,我们称为 一个Document ,当中的字段 我们称为 域(field)

2域的配置位置

2.1:域的配置,其实就是配置到具体的哪个索引库,因为库和库的数据可能是不一样的

solr_home/collection1(solrCore,我自己搭建的时候起名字是collection)/conf/managed-schema(低版本就是schema.xml)

(自己创建的solrHome)/(solrCore)/conf/managed-schema(低版本就是schema.xml)

3配置讲解

Solr字段类型的定义和属性_w3cschool

域的常用属性讲解:

   field:

域的属性讲解
name指定域的名称
type指定域的类型  ,一定是配置文件有的(fieldType类型字段)并且看好它所引用具体属性,如String类型标示字段值将会被原样存储,不分词,不改变
indexed

1:是否建立索引,在搜索的时候可以用它来查询或排序,索引的字段将会建立倒排表

          例如:价格,商品名称,都是需要我们去搜索的,

          商品的图片(url),单是需要我们存储,因为图片也是需要被展示的, 但是却不需要我们搜索。

2:只要想通过该字段删除数据,都必须加indexed="true",否则删除不了

stored是否存储,一个字段是否被存储,取决于你是否想在Solr的查询结果中得到它 ,复制域不需要存储的。
required是否必须,主键是必须的,类似于数据库的主键,无值会报错,添加不成功。
multiValued

是否多值, 默认:fasle  

                      场景-->复制域:   例如 :京东搜索,只有一个搜索框,但是却是要搜索,很多域.

 一个属性存在多值:name:["小明","小红"]

termVectors="true" termPositions="true" termOffsets="true" 

FastVectorHighlighter高亮显示时用的上,场景:索引大文件,

Highlighter则不需要,场景:不适用于大文档

域类型(不同版本solr类型不一样,注意查看配置文件中已有的)  fieldType->type:

   solr不支持BigDecimal类型,请看下面属性

string1字符串类型,2 不会分词,是什么数据就是什么数据
boolean布尔
pint/int (具体看版本)  int
pfloat/float(具体看版本)float
plong/long(具体看版本)long
pdouble/double(具体看版本)double
pints/ints(具体看版本)具体属性看配置文件,用途暂时没发现
binary二进制数据。
pdate日期字段
location/location_rpt"纬度,经度"/"纬度 经度"

配置域注意事项:

  1.  配置文件自带一些配置好的域(id,sku,name...),id默认配置required="true" 并且配置了<uniqueKey>id</uniqueKey>
  2. 配置type不能瞎写,一定是配置文件里面有的 fieldType类型

我们创建的域类型(type),不是我们随意写的,一定是这个配置文件存在的类型

  <!-- ik分词器/字典域 -->
  <fieldType name="text_ik" class="solr.TextField">
    <analyzer type="index">
        <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
  <!--     <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory" useSmart="true" conf="ik.conf"/>
    </analyzer> -->
  </fieldType>     
 <!-- 普通域 -->    
    <!-- 京东为例 sku也是能搜索到的 如果下架还要通过主键删除,必须 indexed="true" -->
          <!-- type="plong" 要看版本的 --> 
 <field name="item_sku" type="plong" indexed="true" stored="true"/>
   <!-- 商品名称 商品名称+属性  荣耀 HONOR 荣耀X30全网通5G手机12GB+256GB 晨曦金 -->
   <field name="item_title" type="text_ik" indexed="true" stored="true"/>
   <!-- 商品价格 -->
   <field name="item_price" type="pdouble" indexed="true" stored="true"/>
    <!-- 商品图片url -->
   <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" termVectors="true" termPositions="true" termOffsets="true" />
    <!-- 品牌 -->
   <field name="item_brand" type="string" indexed="true" stored="true"/>
   <!-- indexed="true" 有可能通过spu删除数据 -->  
 <field name="item_spu"  type="plong" indexed="true" stored="true"/>
   <field name="item_delete" type="boolean" indexed="true" stored="true" />
   <field name="item_show" type="boolean" indexed="true" stored="true" />

  <!-- 复制域:搜索框只有一个,但是搜索的东西可以是 品牌,价格,商品名称等等  说白了以后我们只搜索复制域-->   
  <field name="item_keyword" type="text_ik" indexed="true" stored="false" multiValued="true"/>
  <copyField source="item_title" dest="item_keyword"/>
  <copyField source="item_category" dest="item_keyword"/>
  <copyField source="item_seller" dest="item_keyword"/>
  <copyField source="item_brand" dest="item_keyword"/>
    <!-- 动态域 -->
  <dynamicField name="item_spec_*" type="string" indexed="true" stored="true"/>

 动态域场景:一件商品可以有不同的规格[尺寸,颜色等等]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值