• solr scheme配置简介


    solr 字段配置,和数据库数据索引配置

      配置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字段。

  • 相关阅读:
    一个小时学会MySQL数据库
    4种解决json日期格式问题的办法
    一个小时学会Git
    docker 常用操作
    Fine-Grained Image (细粒度图像) – Papers, Codes and Datasets
    Pytorch在colab和kaggle中使用TensorBoard/TensorboardX可视化
    训练集,验证集,测试集比例
    深度学习模型评估指标
    注意力机制(Attention Mechanism)应用——自然语言处理(NLP)
    自注意力机制(Self-attention Mechanism)——自然语言处理(NLP)
  • 原文地址:https://www.cnblogs.com/rxingyue/p/5038851.html
Copyright © 2020-2023  润新知