solr配置文件schema文件中字段的介绍

来源:互联网 发布:淘宝怎么注册企业账号 编辑:程序博客网 时间:2024/06/15 04:55

一.schema文件的作用:定义索引的文当的类型和字段,类似于数据库表定义

二.常用字段的详解:

fields各个属性说明:

     name: 必须属性 -字段名
     type:
必须属性 - <types>中定义的字段类型

    indexed: 如果字段需要被索引(用于搜索或排序),属性值设置为true
    stored: 如果字段内容需要被返回显示,值设置为true

    multiValued: 如果这个字段在每个文档中可能包含多个值,设置为true

     required:字段必须有值,否则会抛异常
    default:
在增加文档时,可以根据需要为字段设置一个默认值,防止为空

      termVectors: [false]设置为true后,会保存所给字段的相关向量(vector
           
当使用MoreLikeThis,用于相似度判断的字段需要设置为stored来达到最佳性能.
     termPositions:
保存和向量相关的位置信息,会增加存储开销

     termOffsets:
保存 offset和向量相关的信息,会增加存储开销
    docValues: 如果这个字段应该有文档值(doc values),设置为true。文档值在门

           
面搜索,分组,排序和函数查询中会非常有用。虽然不是必须的,而且会导致生成
          
索引变大变慢,但这样设置会使索引加载更快,更加NRT友好,更高的内存使用效率。
          
然而也有一些使用限制:目前仅支持StrField, UUIDField和所有 Trie*Fields,
           
并且依赖字段类型,可能要求字段为单值(single-valued)的,必须的或者有默认值。


  <!--字段名由字母数字下划线组成,且不能以数字开头。两端为下划线的字段为保留字段,
     
(_version_)
   -->
 <!--保留字段,不能删除,否则报错
-->
   <field name="_version_" type="long"indexed="true" stored="true"/>

<!-- 文档的唯一标识,可理解为主键,除非标识为required="false", 否则值不能为空-->
 <uniqueKey>id</uniqueKey>

三.性能优化:

    尽量将所有仅用于搜索,而不用于实际返回的字段设置stored="false"  - 尽量将所有仅用于返回,而不用于搜索的字段设置indexed="false"  - 去掉所有不需要的copyField 语句;  - 为了达到最佳的索引大小和搜索性能,对所有的文本字段设置indexed="false"    使用copyField将他们拷贝到整合字段”name="text"的字段中,使用整合字段进行搜索;  - 使用server模式来运行JVM,同时将log级别调高, 避免输出所有请求的日志。

 注意: 为了节省空间,这个字段默认不被索引, 因使用copyField被拷贝到了名为text的字段中 ,用于内容返回和高亮。搜索时使用text字段

 <fieldname="content" type="text_general"indexed="false"  stored="true"multiValued="true"/>

  整合字段(copyfiled ),包含其他可搜索的字段,当整合字段包含多个需要被索引的字段时multiValued="true“必须设置为true

<field name="text" type="text_general"indexed="true"  stored="false"multiValued="true"/>

  拷贝需要索引的字段到整合字段中

     <copyField source="title" dest="text"/>
   <copyField source="author" dest="text"/>
   <copyField source="description"dest="text"/>
   <copyField source="keywords"dest="text"/>
   <copyField source="content"dest="text"/>

四 indexed,和stored字段使用案例

 

 

1. 当设置assetsTitleindexed=true”,stored=”true”时,即此字段被搜索,可显示内容

 

2. 当设置assetsTitleindexed=true”,stored=”false”时,即此段被搜索,不显示内容

通过此字段查询,可以查询到数据,但字段的内容在显示的结果中不显示。

 

 

3.当设置assetsTitleindexed=false”,stored=”true”时,即通过assetsTittleassetsTitle*xxx*)进行查询,将查询不到数据(但assetstitle的数据是在solr库中是存储存在的);当换一个字段进行查询,返回的结果中,assetstitle字段的内容可以显示。

即此字段为了返回内容显示,不被搜索,可以进行此种情形的设置。

 

4. 当设置assetsTitleindexed=false”,stored=”false”时,即此字段不被搜索,不被显示内容,通过assetsTitle进行查询,查询不到(此字段的数据在solr库中没有存储),通过其他字段查询,显示的结果中也没有assetstitle字段的内容;即此字段不被搜索,不被显示。

 

 

 

 




   

 

0 0
原创粉丝点击