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
知识点
相关教程
更多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实现方案