Solr4.7---Field、CopyField、DynamicField

Field:

   Field就是一个字段,定义一个Field很简单:


基本上属性也和FieldType类似,他的属性会覆盖掉FieldType的同名属性。


CopyField(本段内容直接从solr中文网copy而来):

      

你可能想让document的一些字段可以多次使用。solr 有一个字段复制机制,可以提交多个不同类型字段集中到一个字段。字段复制主要涉及两个概念,source和destination,一个是要复制的字段,另一个是要复制到哪个字段,以下是个例子:

1
<     copyField     source     =     "cat"     dest     =     "text"     maxChars     =     "30000"     />

上例中,如果text字段有数据的话,cat字段的内容将被添加到text字段中。maxChars 参数,一个int类型参数,用于限制复制的字符数。

source和destination都支持通配符。以下是一个将所有以 _t 结尾的字段全部复制到text字段中。

1
<     copyField     source     =     "*_t"     dest     =     "text"     maxChars     =     "25000"     />


    其实说的简单一点,比如现在你要查询包涵"Java"的博客, 那么你肯定要查内容,标题是否包含Java,但是solr不能像SQL那样,where tittle like '%Java%'  or  content like '%Java%'.   这个时候copyField就派上用场了, 定义一个新字段,将title和content 复制到这个新字段,索引的时候,直接从这个新字段查询,这样就达到目地了。  这便是copyField的典型应用场景 。注意:如果dest由多个source构成,就需要将其指定为multiValued。

在网上找了一个例子:

<schema name="eshequn.post.db_post.0" version="1.1"  
    xmlns:xi="http://www.w3.org/2001/XInclude">  
     <fields>  
        <!-- for title -->  
        <field name="t" type="text" indexed="true" stored="false" />  
        <!-- for abstract -->  
        <field name="a" type="text" indexed="true" stored="false" />  
        <!-- for title and abstract -->  
        <field name="ta" type="text" indexed="true" stored="false" multiValued="true"/>  
    </fields>  
    <copyField source="t" dest="ta" />  
    <copyField source="a" dest="ta" />  
</schema>

DynamicField:

   

动态字段(Dynamic fields)允许 solr 索引没有在 schema 中明确定义的字段。这个在忘记定义一些字段时很有用。动态字段可以让系统更灵活,通用性更强。

动态字段和常规字段类似,除了它名字中包含一个通配符外,在索引文档时,一个字段如果在常规字段中没有匹配时,将到动态字段中匹配。

假设schema中定义了一个叫*_i的动态动态字段,如果要索引一个叫 cost_i 的字段,但是 schema 中不存在 cost_i 的字段,这样 cost_i  将被索引到 *_i 字段中。

动态字段也是定义在 schema.xml 文件中,和其他字段一样,它也有个名词,字段类型,和属性。

1
<     dynamicField     name     =     "*_i"     type     =     "sint"     indexed     =     "true"     stored     =     "true"     />

建议在 schema.xml 定义一些基本的动态字段,以备扩展之用。


转自:http://my.oschina.net/MrMichael/blog/224419
2019-03-27 01:21

知识点

相关教程

更多

solr拾遗:CopyField

Home kafka0102的侧面照   solr拾遗:CopyField  Posted in solr  on 十月 30th, 2010 by kafka0102 solr的index schema中,除了支持基本数值类型的field,还支持一些特别的field,比如较常用的CopyField。以下面的schema配置片断为例:       <span style="colo

solr required field: id

为了和以前的程序兼容,在solr建立索引的时候,将id设为gid,结果在建立索引时候出现如下错误: org.apache.solr.common.SolrException: Document [null] missing required field: id .... 原来solr中每个文档都必须有主键,而且默认主键名称为id。 在schema.xml的fields 后有: <unique

Solr Document [null] missing required field: id 的原因

在solr建立索引的时候,如果你提交的doc中没有 id 这个Field,结果Solr在建立索引时候出现如下错误:                       org.apache.solr.common.SolrException:Document[null]missingrequiredfield:id 主要是因为Solr 的solrconfig配置文件中定义了<uniqueKey>

solr4.7学习(1)安装

一.分别下载tomcat7,solr4.7,http://tomcat.apache.org/download-70.cgi,http://lucene.apache.org/solr/ 下载当前的最新版本(solr-4.7.0) 二.安装tomcat,这里不再赘言,解压solr-4.7.0到当前文件夹。 三.创建的solr的工作目录E:\workTool\solr_tomcat. 四.将解压后的

在tomcat中配置solr4.7

一、准备 JDK1.6、Tomcat6、Solr4.7.1 二、步骤 1.解压下载下来的Solr文件,将其中的example/webapps/solr.war文件拷贝到tomcat的webapps目录下 2.将example/solr文件夹中内容拷贝到磁盘上的任意位置(比如:F:/solr),这是solr的主目录,所有操作都要靠它来完成 3.启动tomcat后,出错,solr.war解压缩生成so

Solr4.7+Tomcat7.0配置

1.下载安装jdk,配置环境变量    3.安装tomcat     确保localhost可以正常运行        2.下载Solr 地址:  http://lucene.apache.org/solr/downloads.html            3.解下载的Solr压缩文件    将\solr-4.7.0\dist中的solr-*(版本号).war    复制到     C:\Pro

solr4.7开发实践 4——拼音检索

拼音检索的大致思路是这样的: ①将需要使用拼音检索的字段汇集到一个拼音分词字段里(我的拼音分词字段使用pinyin4j+NGram做的); 加入两个jar包:pinyin4j-2.5.0.jar、pinyinAnalyzer.jar; schema.xml文件设置: <fieldname="pinyin"type="text_pinyin"indexe

solr4.7开发实践 3——分组查询facet

solr将以导航为目的的查询结果称为facet. 它并不会修改查询结果信息, 只是在查询结果上根据分类添加了count信息, 然后用户根据count信息做进一步的查询, 比如淘宝的查询列表中, 上面会表示不同的类目相关查询结果的数量. 比如搜索数码相机, 在搜索结果栏会根据厂商, 分辨率等维度列出, 这里厂商, 分辨率就是一个个facet. 然后在厂商下面会有nikon, canon, sony等

solr4.7配置(ik-analyzer)

环境: windows server 2003 sp2 x86 tomcat8.0 solr-4.7.2 IK Analyzer 2012FF_hf1 ————————————华丽的分割线————————————— 开始走了不少弯路,配置的中文分词器是mmseg4j-1.9.1,按照教程 http://www.luoshengsha.com/170.html,居然错误,查了下发现应该是不支持最新s

solr error logs org.apache.solr.common.SolrException: ERROR: [doc=17] unknown field alias

在solr中 添加新的索引词语时,报如标题所示错误,指定是插入的字段没有在solr索引字段里 可以修改 solr安装目录/solr/conf 目录下的schema.xml 在此xml文件内加入所需字段即可,格式如下 <field name="alias" type="text_general" indexed="true" stor

Solr4.7源码分析-启动篇(三)

接着上一篇http://blog.csdn.net/wenchanter/article/details/37366829 在多线程创建core时,加载完solrconfig.xml和schema.xml,开始实例化一个SolrCore的实例,在生成这个实例的过程中,做了很多工作,构造函数很长: /**   * Creates a new core and register it in the l

solr4.7开发实践 2——高亮显示

第一种方式是solrj操作:   publicSolrDocumentListquery(Stringstr){SolrQueryquery=newSolrQuery(str);query.setHighlight(true);//开启高亮功能query.addHighlightField("name,content");//高亮字段:多个域可以用空格或者逗号分隔query.s

启动Solr时报 _version_ field must exist in schema 错误的解决方法

Solr启动时报 org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Unable to use updateLog: _version_field must exist in schema, using indexed="true" stored="true"

centos6.5配置jdk1.7+tomcat7+solr4.7

1.安装JDK环境 1.1.为安装程序添加执行权限 chmod +x jrockit-jdk1.6.0_33-R28.2.4-4.1.0-linux-x64.bin 1.2.运行安装程序 ./jrockit-jdk1.6.0_33-R28.2.4-4.1.0-linux-x64.bin 会弹出安装界面,将JDK安装到/usr/jrockit/目录下 2.安装ant Apache ant是一个基于J

荐 《Nutch笔记》Nutch-1.7+solr-4.7集成

一、下载安装nutch   下载地址  http://apache.fayea.com/apache-mirror/nutch/1.7/apache-nutch-1.7-bin.tar.gz  安装  [root@centos data]# cd /data/[root@centos data]# mkdir nutch[root@centos data]# tar -zxvf apache-nu

最新教程

更多

java线程状态详解(6种)

java线程类为:java.lang.Thread,其实现java.lang.Runnable接口。 线程在运行过程中有6种状态,分别如下: NEW:初始状态,线程被构建,但是还没有调用start()方法 RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行两种状态统称为“运行状态” BLOCK:阻塞状态,表示线程阻塞

redis从库只读设置-redis集群管理

默认情况下redis数据库充当slave角色时是只读的不能进行写操作,如果写入,会提示以下错误:READONLY You can't write against a read only slave.  127.0.0.1:6382> set k3 111  (error) READONLY You can't write against a read only slave. 如果你要开启从库

Netty环境配置

netty是一个java事件驱动的网络通信框架,也就是一个jar包,只要在项目里引用即可。

Netty基于流的传输处理

​在TCP/IP的基于流的传输中,接收的数据被存储到套接字接收缓冲器中。不幸的是,基于流的传输的缓冲器不是分组的队列,而是字节的队列。 这意味着,即使将两个消息作为两个独立的数据包发送,操作系统也不会将它们视为两个消息,而只是一组字节(有点悲剧)。 因此,不能保证读的是您在远程定入的行数据

Netty入门实例-使用POJO代替ByteBuf

使用TIME协议的客户端和服务器示例,让它们使用POJO来代替原来的ByteBuf。

Netty入门实例-时间服务器

Netty中服务器和客户端之间最大的和唯一的区别是使用了不同的Bootstrap和Channel实现

Netty入门实例-编写服务器端程序

channelRead()处理程序方法实现如下

Netty开发环境配置

最新版本的Netty 4.x和JDK 1.6及更高版本

电商平台数据库设计

电商平台数据库表设计:商品分类表、商品信息表、品牌表、商品属性表、商品属性扩展表、规格表、规格扩展表

HttpClient 上传文件

我们使用MultipartEntityBuilder创建一个HttpEntity。 当创建构建器时,添加一个二进制体 - 包含将要上传的文件以及一个文本正文。 接下来,使用RequestBuilder创建一个HTTP请求,并分配先前创建的HttpEntity。

MongoDB常用命令

查看当前使用的数据库    > db    test  切换数据库   > use foobar    switched to db foobar  插入文档    > post={"title":"领悟书生","content":"这是一个分享教程的网站","date":new

快速了解MongoDB【基本概念与体系结构】

什么是MongoDB MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

windows系统安装MongoDB

安装 下载MongoDB的安装包:mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi,按照提示步骤安装即可。 安装完成后,软件会安装在C:\Program Files\MongoDB 目录中 我们要启动的服务程序就是C:\Program Files\MongoDB\Server\3.2\bin目录下的mongod.exe,为了方便我们每次启动,我

Spring boot整合MyBatis-Plus 之二:增删改查

基于上一篇springboot整合MyBatis-Plus之后,实现简单的增删改查 创建实体类 添加表注解TableName和主键注解TableId import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baom

分布式ID生成器【snowflake雪花算法】

基于snowflake雪花算法分布式ID生成器 snowflake雪花算法分布式ID生成器几大特点: 41bit的时间戳可以支持该算法使用到2082年 10bit的工作机器id可以支持1024台机器 序列号支持1毫秒产生4096个自增序列id 整体上按照时间自增排序 整个分布式系统内不会产生ID碰撞 每秒能够产生26万ID左右 Twitter的 Snowflake分布式ID生成器的JAVA实现方案