• solr的域


    solrhom相当于存放数据的地方,里面一个个文件相当于数据库,每个数据库里面有两个文件夹,一个data,一个conf,conf下有一个schema.xml文件,配置域,相当于表的字段。

    solr中内置了许多的字段类型

    参照Solr中的字段类型field type

    配置域

    域相当于数据库的表字段,用户存放数据,因此用户根据业务需要去定义相关的Field(域),一般来说,每一种对应着一种数据,用户对同一种数据进行相同的操作。

    域的常用属性:

    • name:指定域的名称
    • type:指定域的类型
    • indexed:是否索引
    • stored:是否存储
    • required:是否必须
    • multiValued:是否多值
    一般域的配置:
    <field name="item_goodsid" type="long" indexed="true" stored="true" />
     

    域为item_goodsid我们在使用spring data solr 的时候会用到这个域

    type就是指定这个域存放的数据类型

    indexed=true就是需要索引

    复制域

    复制域的作用在于将某一个Field中的数据复制到另一个域中

    一般 不需要存储,需要索引,type为ik分词

    <!-- 复制域 -->
      <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="attr_*" type="string" indexed="true" stored="true" multiValued="true"/>
    参数:   source:原来域
              dest:指定域(即:将原来域复制到该指定域)
    复制域常用于多域搜索,如:电商项目中搜索商品,既要在名字域中搜索也要在描述域中搜索,传统的做法需要手工写两次,而solr想发送一次请求,可到两个域中搜索,为此,引入了复制域的概念,将两个域的域名复制到一个text文本域中。

    主键

    <uniqueKey>id</uniqueKey>

    文档的唯一标识,对应field里name="id"的那个字段, 必须填写这个field(除非该field被标记required="false"),否则solr建立索引报错。

    常用的类型

    String--->solr.StrField
    boolean--->solr.BoolField
    int--->solr.TrieIntField
    float--->solr.TrieFloatField
    long--->solr.TrieLongField
    double--->solr.TrieDoubleField
    text_general--->solr.TextField

    自定义的域(参考)

    <schema>
    
      。。。。。。
    
    
    <!-- 基本字段 -->
        <!-- 商品id -->
        <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_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" />
    </schema>
    {
        "id": "1",
        "item_goodsid": 1111,
        "item_title": "128G的华为p30",
        "item_price": 3888.8,
        "item_image": "http://1.jpg",
        "item_category": "手机",
        "item_seller": "张三店铺",
        "item_brand": "华为",
        "item_spec_size": "3.5mm"
    }
  • 相关阅读:
    怎样做到长期写一个价值博客?
    linux中rz、rs命令无法执行的情况
    关于图床的选择方案(博客园、公众号、简书、CSDN)
    如何有效地记录和管理笔记(一)
    Linux之时间同步操作
    weblogic12.1.3 静默安装 建域
    在Linux 系统上运行多个tomcat
    Python 生成随机数
    异常处理

  • 原文地址:https://www.cnblogs.com/coder-lzh/p/10722264.html
Copyright © 2020-2023  润新知