Solr 6.1学习笔记(一)-- 配置文件 managed-schema (schema.xml) (2)

接上篇

   2. <dynamicField>

为满足前辍或后辍的一些字段提供统一的定义。如<dynamicField name="*_s" index="true" stored="true" type="string" /> 表示所有以“_s”为后辍的field都具有index="true" stored="true" type="string" 这些属性。dynamicField通常用于以下情形:

2.1 document模型具有较多的字段

举个粟子:想要索引pdf文件,Solr提供了一个简单的requestHandler -- /update/extract,最终会调用apache的另外一个开源项目Tika去解析pdf文件,Solr返回的解析后的document里包含了很多field,我们只想要其中的某些field,如果我们在<field>里只配置了我们想要的field,那么进行索引的时候会报错,错误消息大体为没有定义什么什么field,这时,我们可以配置一个<dynamicField name="ignore_*" type="ignored" multiValued="true">,然后在solrconfig.xml里相应的requestHandler里配置<str name="uprefix">ignore_</str>,这样对于在managed-schema里没定义的field都会被忽略掉。

 2.2 支持来自不同来源的文档

比如索引的时候想要增加标注其来源的field,可以进行如下的配置:

<field name="source1_field1" type="string" index="true" stored="true" />

<field name="source1_field2" type="string" index="true" stored="true" />

<field name="source1_field3" type="string" index="true" stored="true" />

...

<field name="source2_field1" type="string" index="true" stored="true" />

<field name="source2_field2" type="string" index="true" stored="true" />

<field name="source2_field3" type="string" index="true" stored="true" />

但是如果有很多来源的话,这种配置就太多了。我们只须配置<dynamicField name="*_s" index="true" stored="true" type="string" />,然后索引的时候改成:

<doc>

<field name="id">hello</field>

      <field name="source1_field1_s">hello</field>

</doc>

这样,索引时的field名既可以保留来源的信息,又不需要在配置文件里配置很多的field定义。

2.3 增加新的文档来源

还是上面的例子,如果将来有新的文档来源,我们可以不必在配置文件里增加诸如 <field name="source5_field1" type="string" index="true" stored="true" />这样的配置,就可以直接在索引的时候添加“source5_field1_s”这样的字段。

3. <uniqueKey>

一般情况下需要配置<uniqueKey>id</uniqueKey>,虽然目录不是必须的,但是强烈建议设置此值。就好像数据库设计时,虽然不强制每个表有主键,但是一般情况下还是会设置一个主键的。

 4. <copyField>

用百度或google搜索时,我们可能想要搜索一个人名,或者书名,或者网站的名字,其后台索引文件里分别由不同的field去保存那些值,那它是如何用一个输入框去搜索不同的field的内容的呢?答案就是<copyField> (不知道百度或google用的是什么搜索技术,但是原理应该差不多)

<field name="text" type="string" index="true" stored="true" multiValues="true" />

<copyField source="man_name" dest="text" />

<copyField source="book_name" dest="text" />

<copyField source="web_address" dest="text" />

这样我们就只需要搜索text里的内容就可以了。

时间: 2024-08-28 04:38:36

Solr 6.1学习笔记(一)-- 配置文件 managed-schema (schema.xml) (2)的相关文章

WebServices学习笔记(四)使用services.xml文件发布WebService

四.使用services.xml文件发布WebService 前面发布webservices所建立的java类都不能有包名,这里用配置文件services.xml搭建能有包名的webservice 首先创建MyService类,在service包下 package service; import javax.jws.WebParam; public class MyService { public String getGreeting(@WebParam(name="name")Str

solr的LocalParams 学习笔记

LocalParams 学习笔记: 主要从概念.基本语法.查询时type参数可以短格式化,参数值和参数反向引用这几个方面谈: 1  概念 LocalParams提供了一种方式,这种方式能够添加元数据到某一参数类型下.对这一个参数类型进行进一步的补充说明. 假定我们现在有一个已经存在的查询参数: q=solr rocks 我们用LocalParams去前缀化这个查询字符串以提供更多的信息交给查询解析器,例如,改变lucene query parser的默认操作类型是"AND" 和默认字段

Solr 6.7学习笔记(02)-- 配置文件 managed-schema (schema.xml) - filter(5)

自定义fieldType时,通常还会用到filter.filter必须跟在tokenizer或其它filter之后.如: <fieldType> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory" /> </analyzer> </fieldT

Solr in action学习笔记 第二章Getting to know Solr

2.1Getting started *Solr实际是使用http通信,所以可以使用任何语言的API *Solr的一个core包含solr配置文件,lucene索引文件和solr的日志文件 在分布式系统的上下文中,成为collection *Solr还提供COre Admin API *query 当query参数设置好,实质上是向solr服务器发送一个http GET请求 搜索参数: 可以自己写到url里,尽量记住常用的搜索参数,对照solrJ的写法 SolrQuery parameters

Solr in action学习笔记 第四章 Solr Config

本章关注solrconfig.xmlSolr为web应用,有一个系统变量solr.solr.home指明Solr目录,启动Solr核后,有一个/server下有一个应用目录,该目录下有一个core.properties,一个conf文件夹和一个data文件夹.core.properties用于配置core,所以solr可以用该文件自动发现core,然后Solr用solrconfig初始化core. 4.1 Overview of solrconfig.xml 4.1.1Common XML da

Solr in action学习笔记 第十三章 SolrCloud

13.1 Getting started with SolrCloud 13.1.1Starting Solr in cloud mode 单机建立一个集群应用,一个端口模拟一个solr cd $SOLR_INSTALL/cp -r example/ shard1/ 13.1.2 Motivation behind the SolrCloud architecture ■ Scalability■ High availability■ Consistency■ Simplicity■ Elast

Solr 6.1学习笔记 -- spellcheck 组件

<searchComponent name="spellcheck" class="solr.SpellCheckComponent"> <str name="queryAnalyzerFieldType">text_general</str> <!-- 下面的spellchecker使用了DirectSolrSpellChecker, 此类会使用主索引中的term进行拼写检查 --> <ls

【Hibernate学习笔记-4】在hibernate.cfg.xml中配置C3P0数据源

jar包 hibernate.cfg.xml <?xml version="1.0" encoding="GBK"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.d

C#学习笔记(13)——传统方法读取XML

说明(2017-7-12 16:32:47): 1. LINQ的方法虽然很简单,但是有点不好理解,sql的写法总感觉很诡异,而且LINQ的本质也是用的传统方法,所以还是采用老办法吧! 2. 注释里的代码是按照网上文章写得,但是有些地方觉得有点绕,自己尝试一下,稍微简化了一下. 3. 一般都会说,主要用到了三个类:XmlDocument, XmlElement, XmlAttribute,因为目前我只需要进行查询,所以只用到了一个XmlDocument加载xml文件用,其他的都是一些杂七杂八的属性