solr schema.xml 详解

2016-06-06|来源:

solr中所有域都定义在 schema.xml配置文件中,在solr中域必须是先定义再使用,如果你想修改域的定义及自定义域,则要修改 schema.xml文件。


在schema.xml主要包括filed和fieldType。

1、field–索引域,类似于数据表的字段
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" omitNorms="true"  default="df"/>
.....//省略
<field name="_version_" type="long" indexed="true" stored="true"/><!--此字段为最好不要删除哦!非要删除,请把solrconfig.xml中的updateLog注释,但不建议这样-->
属性介绍:
(1)、name:字段名称
(2)、type:字段类型(此处type不是java类型,而是下面定义的fieldType)
(3)、indexed:是否索引?true--solr会对这个字段进行索引,只有经过索引的字段才能被搜索、排序等;false--不索引
(4)、stored:是否存储?true--存储,当我们需要在页面显示此字段时,应设为true,否则false。
(5)、required:是否必须?true--此字段为必需,如果此字段的内容为空,会报异常;false--不是必需
(6)、multiValued:此字段是否可以保存多个值?
(7)、omitNorms:是否对此字段进行解析?有时候我们想通过某个字段的完全匹配来查询信息,那么设置 indexed="true"、omitNorms="true"。
(8)、default:设置默认值


2、fieldType–字段类型

<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
.....//省略
<fieldType name="text_general" positionIncrementGap="100">
       <analyzer type="index">
                   <tokenizer/>
                   <filter ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
                    <filter/>
       </analyzer>
       <analyzer type="query">
             <tokenizer/>
             <filter ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
              <filter synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
               <filter/>
        </analyzer>
</fieldType>
属性说明:
(1)、name:类型名称,<field>中的type引用的就是这个name
(2)、class:solr自定义的类型
(3)、<analyzer type="index">定义建立索引时使用的分词器及过滤器
(4)、<analyzer type="query">定义搜索时所使用的分词器及过滤器
(5)、 <tokenizer/>定义分词器
(6)、<filter/>定义过滤器


3、uniqueKey

<uniqueKey>id</uniqueKey>
类似于数据表数据的id,solr索引库中最好定义一个用于标示document唯一性的字段,此字段主要用于删除document。


4、<copyField/>

<copyField source=”cat” dest=”text”/>
实际项目中为了方便查询,我们会把多个需要查询的字段合并到一个字段里,方便查询。
举例:
       产品搜索,关键词不应该只匹配产品标题,还应该匹配产品关键词及产品简介等,那么在建立索引库时,可以把标题、产品关键词、简介放到一个叫text的字段中,搜索时直接搜text字段。
<fields>
    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    <field name="title" type="text_general" indexed="true" stored="true"/>
    <field name="keywords" type="text_general" indexed="true" stored="true" omitNorms="true"/>
    <field name="description" type="string" indexed="true" stored="true" multiValued="true"/>
</fields>
<copyField source="title" dest="text"/>
<copyField source="keywords" dest="text"/>
<copyField source="description" dest="text"/>


相关问答

更多

mysql跟solr集成删除的数据怎么同步不了

展开全部 1、创建core或collection,有两种方式创建 第一种是使用命令行,查看README.txt所知道的 bin/solr create -c collection 第二种使用访问链接创建 localhost:8983/solr/admin/cores?action=CREATE&name=collection&instanceDir=collection 默认创建的目录在solr-5.2.1/server/solr下 2、修改solr-5.2.1/server/solr/colle ...

如何在solr配置文件里添加新的搜索字段

solr的三个配置文件: 1、solrconfig.xml 只配置一次就够了 2、data-config.xml 配置数据库与solr搜索的映射关系,需要按实际情况处理 3、schema.xml 配置solr搜索字段

solr已经导入mysql数据库索引了,但是查不到怎么回事

假设MySQL数据库有关数据库、表、字段... 1 使用DataImportHandler导入并索引数据... 2 通过data-config.xml完成Solr与MySQL数... 3 修改schema.xml文件,因为这个文件是我... 4 开启tomcat进入Solr的Admin UI界面,在...

java web 怎么用solr

1、将解压包中的solr-4.7.1/dist/solr-4.7.1.war复制到tomcat_dir/webapps/目录,并命名为solr.war。 2、将solr-4.7.1/example/lib/ext/目录下的jar文件复制到tomcat/lib目录下,将solr-4.7.1/example/resources/下的log4j.properties文件复制到tomcat_dir/lib目录下; 切把 solr-4.7.1/example/solr,复制到tomcat_dir/bin下。 ...

Windows7如何安装Solr+Tomcat?

Tomcat下Solr安装配置 由于Solr基于java开发,因此Solr在windows及Linux都能较好部署使用,但由于Solr提供了一些用于测试及管理、维护较为方便的shell脚本,因此在生产部署时候建议安装在Linux上,测试时候可以在windows使用。 Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr 创 ...

专题教程

相关文章

更多

最近更新

更多