1

我正在使用休眠 - Lucene 搜索。

当索引文件/表中没有可用数据时,排序时出现以下运行时异常。

这是我的代码:

.......... .......... query.setFirstResult(startIndex); query.setMaxResults(displayCount);

                 Sort sort = null;
            SortField sortField = new SortField**("vendorName",!true);
            sort = new Sort(sortField);
            query.setSort(sort);

            objList = query.setProjection(searchFields).setResultTransformer(objSavantAliasToBeanResultTransformer).list();

………………………………………………………………………………………………………………

java.lang.RuntimeException:vendorName 字段中没有术语 - 无法在 org.apache.lucene.search.FieldCacheImpl$Cache.get 的 org.apache.lucene.search.ExtendedFieldCacheImpl$5.createValue(ExtendedFieldCacheImpl.java:139) 确定排序类型(FieldCacheImpl.java:71) 在 org.apache.lucene.search.ExtendedFieldCacheImpl.getAuto(ExtendedFieldCacheImpl.java:127) 在 org.apache.lucene.search.FieldSortedHitQueue.comparatorAuto(FieldSortedHitQueue.java:487) 在 org.apache。 lucene.search.FieldSortedHitQueue$1.createValue(FieldSortedHitQueue.java:184) at org.apache.lucene.search.FieldCacheImpl$Cache.get(FieldCacheImpl.java:71) at org.apache.lucene.search.FieldSortedHitQueue.getCachedComparator(FieldSortedHitQueue .java:167) 在 org.apache.lucene.search.FieldSortedHitQueue.(FieldSortedHitQueue.java:55) 在 org.apache.lucene.search。TopFieldDocCollector.(TopFieldDocCollector.java:43) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:121) at org.apache.lucene.search.Searcher.search(Searcher.java:86) at org. hibernate.search.query.QueryHits.updateTopDocs(QueryHits.java:103) at org.hibernate.search.query.QueryHits.(QueryHits.java:61) at org.hibernate.search.query.FullTextQueryImpl.getQueryHits(FullTextQueryImpl.java :354) 在 org.hibernate.search.query.FullTextQueryImpl.list(FullTextQueryImpl.java:270) 在 com.tis.purchasedetails.dao.PurchaseDetailsDAO.getAllPurchaseDetails(PurchaseDetailsDAO.java:1025) 在 org.apache.jsp.jsp。 PurchaseDetails.purchaseDetailsList_jsp._jspService(purchaseDetailsList_jsp.java:275) 在 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) 在 javax.servlet.http.HttpServlet。org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) .jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252 ) 在 org.apache.catalina.core.ApplicationDispatcher 的 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 的 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)。 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398) 上的 processRequest(ApplicationDispatcher.java:463)apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet. java:264) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 在 org.apache.catalina.core.ApplicationFilterChain .doFilter(ApplicationFilterChain.java:173) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) 在 org. apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet. java:264) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 在 org.apache.catalina.core.ApplicationFilterChain .doFilter(ApplicationFilterChain.java:173) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) 在 org. apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)332) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) 在 javax.servlet.http.HttpServlet.service (HttpServlet.java:802) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 在 org.apache。 catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java: 398)332) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) 在 javax.servlet.http.HttpServlet.service (HttpServlet.java:802) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) 在 org.apache。 catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java: 398)java:264) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 在 org.apache.catalina.core.ApplicationFilterChain .doFilter(ApplicationFilterChain.java:173) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) 在 org. apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)java:264) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) 在 org.apache.catalina.core.ApplicationFilterChain .doFilter(ApplicationFilterChain.java:173) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) 在 org. apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) 在 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.爪哇:398)apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) 在 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.爪哇:398)

4

1 回答 1

1

您必须使用不同的SortField构造函数。使用您还指定type的那个。另请参阅https://issues.apache.org/jira/browse/LUCENE-1729

于 2010-02-03T12:14:22.803 回答