全文检索:是指以文本作为检索对象,找出含有指定词汇的文本。
全文检索功能的开发,要做的有两个方面:
1、索引库管理(维护索引库中的数据)
2、索引库中进行搜索。
而Lucene就是操作索引库的工具。
使用lucene的API操作索引库
对索引库的操作可以分为两种:管理与查询。
管理索引库使用IndexWriter,从索引库中查询使用IndexSearcher。
Lucene的数据结构为Document与Field。
Document代表一条数据,Field代表数据中的一个属性。一个Document中有多个Field,Field的值为String型,因为Lucene只处理文本。
我们只需要把在我们的程序中的对象转成Document,就可以交给Lucene管理了,搜索的结果中的数据列表也是Document的集合。
倒排序索引的原理就如同查字典。
要先查目录,得到数据对应的页码,在直接翻到指定的页码。不是在文章中找词,而是从目录中找词所在的文章。
这需要在索引库中生成一个词汇表(目录),在词汇表中的每一条记录都是类似于"词所在文档的编号列表"的结构,记录了每一个出现过的单词,和单词出现的地方(哪些文档)。
查询时先查词汇表,得到文档的编号,再直接取出相应的文档。