1、搜索排序
2、搜索过滤
3、自定义评分
3.1、创建一个类继承于CustomScoreQuery
3.2、覆盖getCustomScoreProvider方法
3.3、创建CustomScoreProvider类
3.4、覆盖customScore方法
3.5、根据field进行评分
4、自定义QueryParser
原因:
1. 对于某些QueryParser(FuzzyQuery,WildcardQuery)在查询时会使得性能降低,所以考虑将这些查询取消
2. 在具体的查询时,很有可能有这样一种需求:需要获取的是一个数字的范围查询。所以必须扩展原有的QueryParser才能进行查询
实现思路:覆盖QueryParser类,并且重载相应方法
4.1、限制性能低的QueryParser
4.2、扩展居于数字和日期的查询
5、自定义过滤器
5.1、定义一个Filter继承Filter类
5.2、覆盖getDocIdSet方法
docIdSet数组存储的值是0,1。其大小和索引中reader.maxdoc()是一样的。查出一个文档,获得他的docId,根据docId从docIdSet取值,如果发现=0,则过滤掉。如果是1,则正常取出。
filter建议做成单例模式