`
ljhupahu
  • 浏览: 33760 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Solr DocValues

    博客分类:
  • Solr
 
阅读更多

当Sorting, faceting时, 通过设置DocValues来保存记录域值的方式是非常高效的。

Solr通过倒排建立索引, 首先建立term list, 然后每个term对应一个document list。 这样

 

因为传统的Solr建立Index是通过倒排索引建立的Index, 首先建立term list, 然后每个term对应一个document list, 这样的结构使得查询能够非常快速, 因为terms在内存中有已经准备好的term-to-documentList.

 

对于其它的我们的搜索, 如sorting, faceting, 和highlighting, 倒排索引并不是非常有效。 比如对faceting来讲, 必须先得到在每一个document中的term组装成结果集, 再得到document IDs. 这些所有操作都是在内存中, 当数据量大的时候 , 会使速度减慢, 并且会占用宝贵的内存资源。

 

在Lucene4.0以后,DocValue 以面向列的存储方式被引用。这是以document-to-value mapping 的方式在index时被创建。 减轻了fieldCache的内存需求, 使faceting, sorting, grouping更加快速。

 

  1. 启动DocValues
只需在field type 中添加docValues="true". 例如:  schema.xml

<field name="manu_exact" type="string" indexed="false" stored="false" docValues="true" />

如果没有添加DocValues之前索引已经建好, 现在又需要DocValues则需要重新创建。

 

DocValues只有在特定的field types中起作用, 不同的filed type决定不同的Lucene docValue 类型。可用的Solr field 类型有:

  • StrField and UUIDField.
  •  field is single-valued (i.e., multi-valued is false), Lucene will use the SORTED type.
  •  field is multi-valued, Lucene will use the SORTED_SET type.
  • 以Trie开头的 numeric fields, date fields and EnumField.
  • field is single-valued (i.e., multi-valued is false), Lucene will use the NUMERIC type.
  •  If the field is multi-valued, Lucene will use the SORTED_SET type.
 对于multi-valued DocValues, 有两种实现方式作为SORTED_SET储存
  1. 返回的值并非是原始输入的顺序,而是经过排序之后进行返回
  2. 当有多个相同的值时, 只有一个被返回

 

2.  检索DocValues

被设置成stored="true"的field在搜索时会被返回。 然而,useDocValuesAsStored可以控制Field values是否可以被返回, 换句话说,  如果useDocValuesAsStored="true" ,那么没有被设置成stored="true"的docValues Field同样会被返回。

分享到:
评论
1 楼 summer7611 2017-04-14  
你好,cwiki.apache.com上有句需要怎么理解?
Note that returning DocValues along with "regular" stored fields at query time has performance implications that stored fields may not because DocValues are column-oriented and may therefore incur additional cost to retrieve for each returned document.
是不是DocValues和store都是true的时候,会造成性能的消耗?

相关推荐

    solr7.5官方文档

    DocValues 是一种用于存储字段值的数据结构,它能够显著提高排序和聚合操作的速度。文档中详细介绍了 DocValues 的特性和使用方法。 #### 无模式模式 无模式模式允许在索引文档时不预先定义模式,使得索引更加灵活...

    apache-solr-ref-guide-7.1.pdf

    “Doc Values”是Solr中的一个功能,它允许索引结构化数据,这部分在“Doc Values”章节中有详细介绍。 在“Schemaless Mode”部分,介绍了Solr的无模式(schemaless)模式,这种方式在不预先定义架构的情况下,...

    SolrPostFilter:Solr 4.9 的后置过滤器示例

    SolrPost过滤器具有三个不同版本的基本 Solr 后置过滤器。 1_Basic - 每个 42 的倍数的 id 将留在结果集中2_Adjustable - 现在可以更改模数3_DocValues - 使用 DocValues 访问 id 字段

    IKAnalyzer 支持高版本最新Lucene 5.x、6.x、7.x

    - Lucene 5.x引入了新的DocValues格式,提高了索引的压缩率和查询速度。同时,支持更强大的多字段搜索和聚合功能。 - Lucene 6.x进一步优化了内存使用,增强了查询性能,并提供了更丰富的分析器选项,如标准分析器...

    lucene高级应用

    5. Join操作:虽然Lucene本身不支持JOIN,但通过DocValues或ExternalFileSorter等技术,可以实现跨文档的相关联查询。 四、分布式搜索 1. Solr或Elasticsearch:这两个基于Lucene的高级框架提供了分布式搜索能力,...

    非常详细的Lucene文档

    6. **缓存(Caching)**: 为了提高搜索性能,Lucene 引入了多种缓存机制,如 DocValues 缓存、Filter 缓存等。 **应用场景** Lucene 应用于各种需要全文搜索的场合,如内容管理系统、知识库、论坛、电子商务网站、...

    Lucene in action 2nd Edition MEAP(英文版第二版)

    5. **高级话题**:涵盖复杂的数据结构如DocValues和Stored Fields,以及倒排索引的压缩技术。同时,也会讨论实时搜索、近实时搜索和分布式搜索场景下的解决方案。 6. **Lucene扩展与集成**:介绍如何在实际项目中...

    我的lucene项目源码

    7. **优化技巧**:理解FieldCache和DocValues对于性能的影响,合理使用 norms 和 term vectors,以及掌握如何调整缓存策略,都是提升Lucene性能的关键。 8. **实战经验**:实际项目中,你可能需要考虑如何设计适合...

    lucene总结

    此外,Lucene还提供了缓存机制以提高性能,比如字段值缓存和DocValues缓存。为了应对大数据量的索引,Lucene支持多线程索引和分布式搜索,例如通过Solr或Elasticsearch这样的分布式搜索引擎平台。 在实际应用中,...

    搜索引擎Lucene_资料

    - **倒排索引优化**: 如位图过滤(Bitset Filter)和DocValues,可以减少搜索过程中的I/O操作。 总结来说,Lucene是一个强大且灵活的全文搜索引擎库,其核心在于高效的索引和搜索机制。通过熟练掌握Lucene,开发者...

    lucene-5.5.3对应的源码文件

    3. DocValues:存储文档的数值型或唯一标识字段,支持排序和过滤。 4. Norms:存储每个文档的长度规范化值,用于调整TF-IDF的得分。 5. postings:倒排列表,存储词项及其对应文档的编号。 五、高级特性 1. N-...

    lucene-4.0.0

    9. **内存缓存**:Lucene 使用 DocValues 和 FieldCache 功能来缓存某些字段的数据,提高搜索性能。4.0.0 版本对此进行了优化,增强了缓存的稳定性和效率。 10. **分布式搜索**:虽然 Lucene 本身不直接支持分布式...

    lucene-5.5.3.zip

    - **DocValues**:用于存储字段的不可变值,如日期、分类标签等,提供高效的排序和过滤功能。 - **块级压缩**:改进了存储效率,降低了磁盘空间的占用。 3. **Lucene的使用** - **创建索引**:使用`IndexWriter`...

    Lucene 2 教程

    1. **缓存机制**:使用 TermVector 和 DocValues 可以缓存某些字段信息,加快搜索速度。 2. **多线程支持**:IndexWriter 支持多线程写入,提高索引构建效率。 3. **近实时搜索**:通过 NRT(Near Real Time)管理...

Global site tag (gtag.js) - Google Analytics