Solr基础教程之Schema.xml(二)
在 Solr 中,使用一个或多个 Document 来构建索引。Document 包括一个或多个 Field。Field 包括名称、内容以及告诉 Solr 如何处理内容的元数据。 例如,Field 可以包含字符串、数字、布尔值或者日期,也可以包含你想添加的任何类型,只需用在solr的配置文件中进行相应的配置即可。Field 可以使用大量的选项来描述,这些选项告诉 Solr 在索引和搜索期间如何处理内容。 下面来挨个详细介绍下这些属性的含义。 1、模式配置Schema.xml 模式组织主要分为三个重要配置。 2、types 部分 fieldType 是一些常见的可重用定义,定义了 Solr(和 Lucene)如何处理 Field。也就是添加到索引中的xml文件属性中的类型,如int、text、date等. <fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
参数说明:
3、fileds 部分 filed是你添加到索引文件中出现的属性名称,也就是前文介绍的,select后面跟着的字段名,而声明类型就需要用到上面的types <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="path" type="text_smartcn" indexed="false" stored="true" multiValued="false" termVector="true" />
<field name="content" type="text_smartcn" indexed="false" stored="true" multiValued="false" termVector="true"/>
<field name ="text" type ="text_ik" indexed ="true" stored ="false" multiValued ="true"/>
<field name ="pinyin" type ="text_pinyin" indexed ="true" stored ="false" multiValued ="false"/>
<field name="_version_" type="long" indexed="true" stored="true"/>
<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
<dynamicField name="*_l" type="long" indexed="true" stored="true"/>
<dynamicField name="*_s" type="string" indexed="true" stored="true" />
<copyField source="content" dest="pinyin"/>
<copyField source="content" dest="text"/>
<copyField source="pinyin" dest="text"/>
copyField就引出了solr的一个全文检索的概念,如果我要实现一个搜索,而我要搜索的属性有很多个那么应该使用如下配置方法: <!-- 关键字搜索 -->
<field name="keyword" type="text_general" indexed="true" stored="false" multiValued="true"/>
<copyField source="SEOTitle" dest="keyword"/>
<copyField source="title" dest="keyword"/>
<copyField source="subTitle" dest="keyword"/>
<copyField source="shopName" dest="keyword"/>
<copyField source="SEOKeywords" dest="keyword"/>
<copyField source="category_name_*" dest="keyword"/>
<copyField source="descriptionForSearch" dest="keyword"/>
此时keyword的值就相当于包含了SEOTitle、title、subTitle、shopName、SEOKeywords、category_name_*、descriptionForSearch的所有内容。 另外这里大家一定会好奇,keyword使用的type=”text_general”会达到什么效果,其实很简单,text_general是我在上面定义的分词器,能够根据一定的格式分词,利于搜索,如果不实用text_general,那么就达不到全文检索,模糊搜索的目的了。 字段属性说明:
注意:_version_ 是一个特殊字段,不能删除,是记录当前索引版本号的. 4、其他配置 uniqueKey:唯一键,这里配置的是上面出现的fileds,一般是id、url等不重复的。在更新、删除的时候可以用到。 defaultSearchField:默认搜索属性,如q=solr就是默认的搜索那个字段 solrQueryParser:查询转换模式,是并且还是或者(AND/OR必须大写) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 基于Vue.js的大型报告页项目实现过程及问题总结(二)
- NandFlash操作详解(二)
- 【Android核心基础02】 - 界面布局、测试、数据存储访问、权
- ruby-on-rails – Rails:成分的未定义方法`map’
- ruby – 在Rails服务器启动时malloc_zone_unregister失败
- GitHub Eclipse配置使用教程详解
- Oracle设置使用加密方式传输数据
- 大括号:Ruby&Rails中的[Brackets],(圆括号)和{Curlies
- Xcode命令行生成失败,“无法读取权限”
- ruby-on-rails – 日期范围的自定义ActiveAdmin过滤器