lucene学习笔记(五)lucene高级搜索

lucene学习笔记(五)lucene高级搜索_第1张图片

1、搜索排序

lucene学习笔记(五)lucene高级搜索_第2张图片

2、搜索过滤

lucene学习笔记(五)lucene高级搜索_第3张图片

3、自定义评分

这里写图片描述

3.1、创建一个类继承于CustomScoreQuery

lucene学习笔记(五)lucene高级搜索_第4张图片

3.2、覆盖getCustomScoreProvider方法

lucene学习笔记(五)lucene高级搜索_第5张图片

3.3、创建CustomScoreProvider类

lucene学习笔记(五)lucene高级搜索_第6张图片

3.4、覆盖customScore方法

lucene学习笔记(五)lucene高级搜索_第7张图片

3.5、根据field进行评分

lucene学习笔记(五)lucene高级搜索_第8张图片
lucene学习笔记(五)lucene高级搜索_第9张图片

4、自定义QueryParser

原因:
1. 对于某些QueryParser(FuzzyQuery,WildcardQuery)在查询时会使得性能降低,所以考虑将这些查询取消
2. 在具体的查询时,很有可能有这样一种需求:需要获取的是一个数字的范围查询。所以必须扩展原有的QueryParser才能进行查询

实现思路:覆盖QueryParser类,并且重载相应方法

4.1、限制性能低的QueryParser

lucene学习笔记(五)lucene高级搜索_第10张图片

4.2、扩展居于数字和日期的查询

5、自定义过滤器

5.1、定义一个Filter继承Filter类

lucene学习笔记(五)lucene高级搜索_第11张图片

5.2、覆盖getDocIdSet方法


docIdSet数组存储的值是0,1。其大小和索引中reader.maxdoc()是一样的。查出一个文档,获得他的docId,根据docId从docIdSet取值,如果发现=0,则过滤掉。如果是1,则正常取出。

filter建议做成单例模式

5.3、设置DocIdSet

lucene学习笔记(五)lucene高级搜索_第12张图片

你可能感兴趣的:(Lucene)