1.4.9 DocValues】的更多相关文章

Fieldcache:  docID->document->fieldvalue 无论是聚类排序关联等,首先都需要获得文档中某个字段的值,通过docID去获得整个document,然后再去获得字段值,term转换得到最终值,FieldCache一开始就缓存了所有文档的某个特定域(所有数值类型以及不分词的stringField)的值到内存,便于随机存取该域值! Fieldcache实现过程: http://moshalanye.iteye.com/blog/281379 缺点: 1. 常驻内存,…
DocValues 在solr4.2以后,引入了一个令人兴奋的功能,这个功能在lucene存在已经一段时间了,但是还没有在solr中使用. 在某些方面,DocValue 是一种非常有效的索引方式. 为什么用DocValues? 标准的建立索引方式是一中倒排序索引方式,这种方式就是对索引中的所有文档的词语(terms)构造一个列表,挨着term是一个词语(term)所属文档的列表(同样包含词语在一篇文档中出现的次数).这种方式会使搜索速度很快,因为用户通过词语来搜索的,有一个准备好的词语到文档关系…
原来的string docvalues使用utf-8编码,载入时转码花费大量时间,我们把转码实现从new String(bytes, "UTF-8")改用lucene的bytesRef.utf8ToString,降低了大约十秒的时间. 想进一步优化,我们使用UTF-16LE编码,解码很easy甚至仅仅需拷贝,假设用简单的byte[]到char[]转换,能够在节省7秒时间,而假设用unsafe能够节省估计15秒以上的时间(没有对全量索引做測试).…
原文地址http://wiki.apache.org/solr/DocValues DocValues从Lucene4.2和Solr4.2开始加入,通过建立字段的正排索引,提升sorting, faceting, grouping, function queries等性能. 介绍 在Solr的配置文件(schema.xml)中,如果需要为一个Filed建立倒排索引,可以通过配置(indexed=”true”)来实现,DocValues是一种正排索引方式,通过设置(DocValues=”true”…
前言: 在Lucene4.x之后,出现一个重大的特性,就是索引支持DocValues,这对于广大的solr和elasticsearch用户,无疑来说是一个福音,这玩意的出现通过牺牲一定的磁盘空间带来的好处主要有两个: (1)节省内存 (2)对排序,分组和一些聚合操作时能够大大提升性能 下面来详细介绍下DocValue的原理和使用场景 (一)什么是DocValues? DocValues其实是Lucene在构建索引时,会额外建立一个有序的基于document => field value的映射列表…
Elasticsearch最近一段时间非常火,以致于背后的公司都改名为Elastic了,因为Elasticsearch已经不仅限于搜索,反而更多的用在大数据分析场景,所以在公司品牌上开始“去Search化”.这得益于其强大的支持聚合分析的Query DSL,虽然这个DSL的语法有点复杂,但底层的技术确实牛B,分布式的快速分析引擎,Elasticsearch已经占有一席之地. 大家知道,搜索引擎的基本数据结构是反向索引,也就是为每个关键词建立了到文档的映射,然后所有的关键词是一个有序列表.搜索的时…
眼下商户索引DocValues很大,warmup时花费70-80秒(在beta环境),有62秒在载入DocValues,发现当中有54秒时间在载入string docvalues,string docvalues涉及的总数达到138M,平均一个字符串13字节,但假设仅仅是读,仅仅要花费大约2秒时间(之前已经通过cat增加page cache),为什么花这么多时间?大部分时间花在String(bytearray,off,len,charset)上(假设仅仅是一个StringBuilder生成的字符…
加载 如何利用索引和主存储,是一种两难的选择. 选择不使用索引,只使用主存储:除非查询的字段就是主存储的排序字段,否则就需要顺序扫描整个主存储. 选择使用索引,然后用找到的row id去主存储加载数据:这样会导致很多碎片化的随机读操作.(ES检索出来的一堆ID,然后根据这些ID去数据库里取东西就是碎片化的磁盘操作!) 没有所谓完美的解决方案.MySQL支持索引,一般索引检索出来的行数也就是在1~100条之间.如果索引检索出来很多行,很有可能MySQL会选择不使用索引而直接扫描主存储,这就是因为用…
前言:  在Lucene4.x之后,出现一个重大的特性,就是索引支持DocValues,这对于广大的solr和elasticsearch用户,无疑来说是一个福音,这玩意的出现通过牺牲一定的磁盘空间带来的好处主要有两个:  (1)节省内存  (2)对排序,分组和一些聚合操作时能够大大提升性能  下面来详细介绍下DocValue的原理和使用场景  (一)什么是DocValues?  DocValues其实是Lucene在构建索引时,会额外建立一个有序的基于document => field valu…
Why DocValues? The standard way that Solr builds the index is with an inverted index. This style builds a list of terms found in all the documents in the index and next to each term is a list of documents that the term appears in (as well as how many…
public final class Lucene54DocValuesFormat extends DocValuesFormat Lucene 5.4 DocValues format. Encodes the five per-document value types (Numeric,Binary,Sorted,SortedSet,SortedNumeric) with these strategies: NUMERIC: Delta-compressed: per-document i…
什么是docValues? docValues是一种记录doc字段值的一种形式,在例如在结果排序和统计Facet查询时,需要通过docid取字段值的场景下是非常高效的. 为什么要使用docValues? 这种形式比老版本中利用fieldCache来实现正排查找更加高效,更加节省内存.倒排索引将字段内存切分成一个term列表,每个term都对应着一个docid列表,这样一种结构使得查询能够非常快速,因为term对应的docid是现成就有的.但是,利用它来做统计,排序,高亮操作的时候需要通过doci…
前言: 在Lucene4.x之后,出现一个重大的特性,就是索引支持DocValues,这对于广大的solr和elasticsearch用户,无疑来说是一个福音,这玩意的出现通过牺牲一定的磁盘空间带来的好处主要有两个: (1)节省内存 (2)对排序,分组和一些聚合操作时能够大大提升性能 下面来详细介绍下DocValue的原理和使用场景 (一)什么是DocValues? DocValues其实是Lucene在构建索引时,会额外建立一个有序的基于document => field value的映射列表…
本文简单对比下Solr与MySQL的查询性能速度. 测试数据量:10407608     Num Docs: 10407608 这里对MySQL的查询时间都包含了从MySQL Server获取数据的时间. 在项目中一个最常用的查询,查询某段时间内的数据,SQL查询获取数据,30s左右 SELECT * FROM `tf_hotspotdata_copy_test` WHERE collectTime BETWEEN '2014-12-06 00:00:00' AND '2014-12-10 21…
如果需要对带经纬度的数据进行检索,比如查找当前所在位置附近1000米的酒店,一种简单的方法就是:获取数据库中的所有酒店数据,按经纬度计算距离,返回距离小于1000米的数据. 这种方式在数据量小的时候比较有效,但是当数据量大的时候,检索的效率是很低的,本文介绍使用Solr的Spatial Query进行空间搜索. 空间搜索原理 空间搜索,又名Spatial Search(Spatial Query),基于空间搜索技术,可以做到: 1)对Point(经纬度)和其他的几何图形建索引 2)根据距离排序…
域缓存,加载所有文档中某个特定域的值到内存,便于随机存取该域值. 用途及使用场景 当用户需要访问各文档中某个域的值时,IndexSearcher.doc(docId)获得Document的所有域值,但访问速度比较慢,而且只能获得Stored域的值. FieldCache能获得域值数组,根据docId random access域值.FieldCache是高级内部API,通常用户不会直接使用,Lucene的域值排序.过滤等功能会在内部使用域缓存. 原理 域缓存构造过程: un-invert倒排索引…
问题描述如标题. 异常信息如下: Result Caused by: org.apache.solr.common.SolrException: Invalid Date String:'Mon Sep 14 01:48:38 CEST 2015' at org.apache.solr.util.DateFormatUtil.parseMath(DateFormatUtil.java:) 对应开源问题单: https://issues.apache.org/jira/browse/SOLR-80…
从 high level 的角度来看,schema.xml 结果如下,这个例子虽然不是一个真实的XML,但是简洁明了的传达了shema的概念. <schema> <types> <fields> <uniqueKey> <defaultSearchField> <solrQueryParser defaultOperator> <copyField> </schema> 绝大部分设计工作和内容都在types和f…
参考: http://bbs.csdn.net/topics/390391810?page=1 自己遇到的: ------------------------------------------------------------------------------------------------------------------------------------------------------------------ ## A fatal error has been detect…
solrconfig.xml配置文件主要定义了SOLR的一些处理规则,包括索引数据的存放位置,更新,删除,查询的一些规则配置.下面将对solrconfig进行详细描述:1 <luceneMatchVersion>4.8</luceneMatchVersion> 表示solr底层使用的是lucene4.82 <lib dir="../../../contrib/extraction/lib" regex=".*\.jar" /> 表…
参考文章:http://www.freebuf.com/articles/database/100423.html 对上面链接的补充: solr-5.5.0版本已被删除,新url:http://mirrors.hust.edu.cn/apache/lucene/solr/5.5.3/ 下面是数据库的创建语句: DROP TABLE IF EXISTS `b41sgk`; CREATE TABLE `b41sgk` ( `id` bigint() NOT NULL AUTO_INCREMENT,…
先把文件的代码贴上来: <?xml version="1.0" encoding="UTF-8" ?> <!-- 版权说明... --> <!-- 这是solr的chema 文件,这个文件应该被重命名为"schema.xml",而且他应该放在solrhome/core/conf文件下面. 获取你也能在solr webapp 的classload下面找到他. 更多的信息可以查看 http://wiki.apache.o…
关于solr的搭建详见上一篇的随笔. 步骤1: 在webapps中solrhome下新建一个文件夹名字叫做mynode(名字不固定,可以随便取,但是这个名字在后面的配置中会有所关联.)然后在mynode文件下新建一个名字叫做conf的文件夹(这个文件名字最后不要改.)然后把官网下下来的solr项目中solr-6.0.0\server\solr\configsets\data_driven_schema_configs\conf下的所有东西复制到conf中去.(注意不要复制错!)最后把solr-6…
本文介绍下lucene生成的索引有哪些文件组成,每个文件包含了什么信息.基于Lucene 4.10.0. 数据结构 索引(index)包含了存储的文档(document)正排.倒排信息,用于文本搜索.索引又分为多个段(segments),每个新添加的doc都会存到一个新segment中,不同的segments又会合并成一个segment.segment存储着具体的documents,每个doc有一系列的字段(field)组成,一个field的值是多个词(term),一个term是以一些bytes…
本文已挪至  http://www.zhoujingen.cn/blog/8546.html Solr将数据以结构化的方式存入系统中,存储的过程中可以对数据建立索引,这个结构的定义就是通过schema.xml来配置的. <?xml version="1.0" encoding="UTF-8" ?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more cont…
说明:请务必先了解如下知识,否则阅读本文会晕. Solr术语介绍:SolrCloud,单机Solr,Collection,Shard,Replica,Core之间的关系 Solr通过三个主要文件来作配置:solr.xml,solrconfig.xml,shema.xml.在Solr 4.5以前,(SolrCloud的)solr.xml不放在zookeeper上,其他的配置文件都存在zookeeper.Solr 4.5开始,solr.xml也支持放在zookeeper.(见开源问题单SOLR-47…
1.   solrconfig.xml solrconfig.xml配置文件主要定义了SOLR的一些处理规则,包括索引数据的存放位置,更新,删除,查询的一些规则配置. 1.1.  datadir节点  <dataDir>${solr.data.dir:d:/Server/Solr/data}</dataDir>  定义了索引数据和日志文件的存放位置 1.2.  luceneMatchVersion <luceneMatchVersion>4.10.1</lucen…
solrconfig.xml包含了用于配置自身行为的绝大部分参数,其作用范围是当前core.该文件位于${solr_home}/solr/core1/conf/下. 参数列表概览: A.lib B.dataDir parameter C.directoryFactory D.codecFactory E.indexConfig Section F.Update Handler Section G.The Query Section H.Request Dispatcher I.Request H…
该配置文件中的标签:<fileTypes>.<fields>.<uniqueKey>.<copyField> fieldType说明 标签types中定义了field可以使用的类型,类型定义中可以指定document中字段的常用属性及分词规则.solr中提供了多个预定义的fieldType,另外用户也可以自定义fieldType(比如中文分词的配置). 一.fieldType常用属性: A.name: 字段类型名 B.class: java类名 C.inde…
schema.xml 是用来定义索引数据中的域的,包括域名称,域类型,域是否索引,是否分词,是否存储,是否标准化即 Norms ,是否存储项向量等等. schema.xml 配置文件的根元素就是 schema, 有个 name 属性, name 属性值可以随便配,根元素没什么好说的, schema 元素下主要有两个标签元素即 field 和 fieldType,field 表示域,用来定义域, fieldType 用来定义域类型. field 元素有很多属性可以配置,我一一做个解释: name:…