使用lucene4.6进行排序时报错:java.lang.IllegalArgumentException: after must be a FieldDoc; got doc=411 score=1

在使用Lucene 4.6进行分页排序时遇到异常:'java.lang.IllegalArgumentException: after must be a FieldDoc; got doc=411 score=1'。问题关键在于分页的上、下一页都需要传入相同的排序对象。解决办法是确保无论在搜索上一页还是下一页时,IndexSearcher的search()或searchAfter()方法都包含排序对象参数。
摘要由CSDN通过智能技术生成

我的lucene 4.6的分页、排序代码是:

     private ScoreDoc getLastScoreDoc(int pageNum,int pageRecord,Query query,IndexSearcher searcher,Sort sort) throws IOException {  
	    if(pageNum==1)return null;//如果是第一页就返回空  
	    int num = pageRecord*(pageNum-1);//获取上一页的最后数量  
	    TopDocs tds = searcher.search(query, num,sort);  
	    return tds.scoreDocs[num-1];  
	}
	
	/**
	 * 标题查询匹配的分页数据
	 * @param query
	 * @param pageNum
	 * @param pageRecord
	 * @return Page 单页Page对象
	 */
	public Page singleSearchPageByAfter(String queryStr,int pageNum,int pageRecord) {
		List<WenDu> pagelist=null;
		Page page=null;
	    try {  
	    	Directory directory = FSDirectory.open(new File(indexdir));
			IndexReader reader = IndexReader.open(directory);
			IndexSearcher searcher = new IndexSearcher(reader);
	   
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值