请问一下Lucene对文档内容建立索引后是否将文档存储?
请问一下Lucene对文档内容建立索引后是否将文档存储?当进行搜索时,是搜索时是否还需要去搜索原文档?...
请问一下Lucene对文档内容建立索引后是否将文档存储?当进行搜索时,是搜索时是否还需要去搜索原文档?
展开
1个回答
展开全部
Lucene搜索时都是搜索的索引库,并不搜索原文档。
在索引时,Lucene首先将文档内容进行分词,然后做成倒排索引,搜索是搜索该倒排索引。
建立索引时,可以针对每个字段(域)进行不同的索引设置,可设置是否分词?是否存储?以及使用到的分词器。此处设置的是否存储是指该字段(域)是否作为一个整体保留(不分词)。
例如:文档一:”巴西世界杯很好看!“
在索引时,如果是分词索引,则:
巴西/世界杯/很/好看
如果搜索世界杯,则文档一就会被搜索出来,在索引中保存的是巴西/世界杯/很/好看 这样的分词。
如果索引时除了分词之外还存储该字段(域),则:
巴西/世界杯/很/好看/巴西世界杯很好看
可以看出,索引中 将文档一的所有内容作为一个分词,搜索时必须输入整个字段内容才会搜索到
就想到这么多了,希望你能明白。
在索引时,Lucene首先将文档内容进行分词,然后做成倒排索引,搜索是搜索该倒排索引。
建立索引时,可以针对每个字段(域)进行不同的索引设置,可设置是否分词?是否存储?以及使用到的分词器。此处设置的是否存储是指该字段(域)是否作为一个整体保留(不分词)。
例如:文档一:”巴西世界杯很好看!“
在索引时,如果是分词索引,则:
巴西/世界杯/很/好看
如果搜索世界杯,则文档一就会被搜索出来,在索引中保存的是巴西/世界杯/很/好看 这样的分词。
如果索引时除了分词之外还存储该字段(域),则:
巴西/世界杯/很/好看/巴西世界杯很好看
可以看出,索引中 将文档一的所有内容作为一个分词,搜索时必须输入整个字段内容才会搜索到
就想到这么多了,希望你能明白。
追问
你说这都很清楚!当对一篇文档做完索引后,我将这篇文档删除过后,但是再进行搜索时,还能够搜索关键字时还能够搜索出全文,我就不知道这文档是否在Lucene内部有存储?如果有存储是以上面方式存储的?存储在什么地方?
例如:你上面所说的“文档一”,当我对它建立完索引后就将它删除掉,但是搜索关键字时,还能将它搜索出来。
追答
索引中存储了每个分词(Term)的信息,这些信息包括该分词在哪篇文档的哪个位置出现过?一共出现了多少次? 所以,即使你删除掉了原文档,单纯利用索引库也是可以重建原文档的(这里指的是重建原文档的文本信息),所以,删除掉原文后能搜索出“文档一”的内容,但你看到的内容是根据索引库重建的数据(这里是指摘要),跟原文无关。
这里推荐你看一下《Lucene原理及代码分析》这个文档,搜一下就能有。里面具体讲了Lucene索引中是怎样存储正向信息和反向信息的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询