JnB*_*ymn 12 lucene solr data-structures elasticsearch
从数据结构的角度来看,Lucene(Solr/ElasticSearch)如何快速地过滤术语计数?例如,给定包含"bacon"一词的所有文档,找到这些文档中所有单词的计数.
首先,对于背景,我理解Lucene依赖于类似于CONCISE的压缩位数组数据结构.从概念上讲,这个位数组对于与术语不匹配的每个文档都保持0,对于与术语匹配的每个文档保持1.但很酷/很棒的部分是这个数组可以高度压缩,并且在布尔操作时非常快.例如,如果你想知道哪些文件包含术语"红色"和"蓝色",那么你抓住对应于"红色"的位数组和对应于"蓝色"的位数组和AND它们一起得到一个对应的位数组匹配文件.
但是,Lucene如何快速确定与"培根"相匹配的文档中所有单词的计数?在我天真的理解中,Lucene必须将与培根相关的位数组和AND它与每个单独的其他单词的位数组相关联.我错过了什么吗?我不明白这是多么有效.此外,这些位阵列是否必须从磁盘中取出?听起来更糟糕!
神奇的工作怎么样?
Sap*_*Sap 11
您可能已经知道这一点但是说Lucene使用倒排索引并不会有什么坏处.在该索引技术中,制作出在所有文档中出现的每个单词的字典,并且针对每个单词存储关于单词出现的信息.像这个图像的东西
为实现此目的,Lucene以不同的文件格式存储文档,索引及其元数据.请点击此链接获取文件详细信息http://lucene.apache.org/core/3_0_3/fileformats.html#Overview
如果您阅读该document numbers
部分,则会为每个文档提供一个内部ID,因此当找到带有"consign"字样的文档时,lucene引擎会引用它的元数据.请参阅概述部分以查看在不同的lucene索引中保存的数据.现在我们有一个指向存储文档的指针,Lucene可能会通过以下方式之一获取它
最后,您使用哪个API"快速确定所有单词的计数"
图片来自http://leanjavaengineering.wordpress.com/
归档时间: |
|
查看次数: |
3476 次 |
最近记录: |