请问一下Lucene对文档内容建立索引后是否将文档存储?

请问一下Lucene对文档内容建立索引后是否将文档存储?当进行搜索时,是搜索时是否还需要去搜索原文档?... 请问一下Lucene对文档内容建立索引后是否将文档存储?当进行搜索时,是搜索时是否还需要去搜索原文档? 展开
 我来答
sukinwoo
2014-06-30 · 超过20用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:40.9万
展开全部
Lucene搜索时都是搜索的索引库,并不搜索原文档。

在索引时,Lucene首先将文档内容进行分词,然后做成倒排索引,搜索是搜索该倒排索引。

建立索引时,可以针对每个字段(域)进行不同的索引设置,可设置是否分词?是否存储?以及使用到的分词器。此处设置的是否存储是指该字段(域)是否作为一个整体保留(不分词)。

例如:文档一:”巴西世界杯很好看!“
在索引时,如果是分词索引,则:
巴西/世界杯/很/好看
如果搜索世界杯,则文档一就会被搜索出来,在索引中保存的是巴西/世界杯/很/好看 这样的分词。
如果索引时除了分词之外还存储该字段(域),则:
巴西/世界杯/很/好看/巴西世界杯很好看
可以看出,索引中 将文档一的所有内容作为一个分词,搜索时必须输入整个字段内容才会搜索到

就想到这么多了,希望你能明白。
追问
你说这都很清楚!当对一篇文档做完索引后,我将这篇文档删除过后,但是再进行搜索时,还能够搜索关键字时还能够搜索出全文,我就不知道这文档是否在Lucene内部有存储?如果有存储是以上面方式存储的?存储在什么地方?
例如:你上面所说的“文档一”,当我对它建立完索引后就将它删除掉,但是搜索关键字时,还能将它搜索出来。
追答
索引中存储了每个分词(Term)的信息,这些信息包括该分词在哪篇文档的哪个位置出现过?一共出现了多少次? 所以,即使你删除掉了原文档,单纯利用索引库也是可以重建原文档的(这里指的是重建原文档的文本信息),所以,删除掉原文后能搜索出“文档一”的内容,但你看到的内容是根据索引库重建的数据(这里是指摘要),跟原文无关。

这里推荐你看一下《Lucene原理及代码分析》这个文档,搜一下就能有。里面具体讲了Lucene索引中是怎样存储正向信息和反向信息的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式