lucene适用于全文检索,文件内容检索,目前少数情境下会使用lucene,而不用sql
一.
原始记录表+索引表
1.lucene索引库在硬盘中,原始库接受的是Document对象,通过IndexWriter流写入硬盘。
2.检索:传入关键字,指定查询字段。IndexSearcher流查询得到索引表中的TopDocs对象(012),进而得到索引表中封装编号和分数的ScoreDoc对象,便可以得到编号。编号可以得到原始表的document对象
3.Document与javaBean相互转换很麻烦,可写工具类再重构Document与javaBean部分冗余代码
4.lucene增删改查.
二.
1.每次插入会产生一个文件,导致文件数量问题,可文件合并,可指定任意数量合并。
2.索引表存在于硬盘,可以同步到内存索引表提高性能。并且结束时把内存索引表同步到硬盘索引表。
3.lucene存在内置分词器,也可以使用第三方分词器。中文可以推荐一款IKAnalyzer。
4.可以设置查询关键字高亮
5.可以设置查询后展示排序规则
6.之前写死内容查询,其实可以在多个字段查询:title,content
new MultiFieldQueryParser(LuceneUtil.getVersion(),new String[]{"content","title"},LuceneUtil.getAnalyzer());