Lucene .net多索引查询,报read past EOF

问题描述

对每张表建立索引放在不同目录,多表查询时调用多个索引查询,查询时会报错readpastEOF。具体错误如下:代码如下:#region搜索设置privatevoidSearchContent(){stringcontent=HttpContext.Current.Request.QueryString["content"];stringdate1=HttpContext.Current.Request.QueryString["date1"];stringdate2=HttpContext.Current.Request.QueryString["date2"];string[]dbnames=(HttpContext.Current.Request.QueryString["dbname"]).Split(',');stringpath=ConfigurationManager.AppSettings["indexpath"].ToString();string[]indexPaths=newstring[dbnames.Length];for(inti=0;i<dbnames.Length;i++){indexPaths[i]=@""+path+dbnames[i]+"";}stringindexPath=@""+path+dbnames[0]+"";stringkw=content;//kw=kw.ToLower();FSDirectory[]directories=newFSDirectory[dbnames.Length];IndexReader[]readers=newIndexReader[dbnames.Length];IndexSearcher[]searchers=newIndexSearcher[dbnames.Length];for(intn=0;n<indexPaths.Length;n++){directories[n]=FSDirectory.Open(newDirectoryInfo(indexPaths[n]),newNoLockFactory());readers[n]=IndexReader.Open(directories[n],true);searchers[n]=newIndexSearcher(readers[n]);}MultiSearchernewsearcher=newMultiSearcher(searchers);//过滤器TermRangeFilterfilter=newTermRangeFilter("PD",date1,date2,true,true);PhraseQueryquery=newPhraseQuery();foreach(stringwordinSearchHelper.SplitWord(kw))//将用户输入的搜索内容进行了盘古分词、{query.Add(newTerm("TI",word));}query.SetSlop(100);TopScoreDocCollectorcollector=TopScoreDocCollector.create(100000,true);//结合过滤器查询newsearcher.Search(query,filter,collector);intPageIndex=AspNetPager1.CurrentPageIndex;intPageSize=AspNetPager1.PageSize;intRowCount=collector.GetTotalHits();intPageCount=Convert.ToInt32(Math.Ceiling((RowCount*1.0)/PageSize));ScoreDoc[]docs=collector.TopDocs((PageIndex-1)*PageSize,PageSize).scoreDocs;List<SearchResult>list=newList<SearchResult>();for(inti=0;i<docs.Length;i++){intdocId=docs[i].doc;//得到查询结果文档的id(Lucene内部分配的id)Documentdoc=searcher.Doc(docId);//找到文档id对应的文档详细信息SearchResultresult=newSearchResult();result.TI=doc.Get("TI");//SearchHelper.Highlight(kw,doc.Get("TI"));result.AN=doc.Get("AN");result.id=doc.Get("id");result.PD=doc.Get("PD");result.ABST=doc.Get("ABST");list.Add(result);}this.SearchRepeater.DataSource=list;this.SearchRepeater.DataBind();AspNetPager1.RecordCount=RowCount;}protectedvoidAspNetPager1_PageChanged(objectsender,EventArgse){SearchContent();}

解决方案

本帖最后由 hxytmac 于 2014-09-02 15:35:09 编辑

时间: 2025-01-30 11:48:41

Lucene .net多索引查询,报read past EOF的相关文章

大数据-orcale大量数据分组查询报错求大神指点

问题描述 orcale大量数据分组查询报错求大神指点 对一个表数据进行分组查询,但是数据量太大了,当时是3000w条,跑着就报错了,数据库内部错误,也不是很懂.想请教下group by的时候是否数据量太多会报错,如果是它可以承受多大的数据量分组查询. 解决方案 肯定会报错,数据量大就会请求超时 解决方案二: 建议使用索引,给需要分组的字段加索引 解决方案三: 你可以试试根据你当前数据库的配置情况,进行分组查询的时候,使用多线程的方式进行查询 例如: select /*+ parallel(t,1

Lucene3.0入门教程(二)——索引查询

对已经创建的索引进行查询,即是搜索,这包括两个部份,一是如何直接读取某个索引的所有记录,二是如果对某个索引进行搜索. 一.列出索引里的文档 列出索引需引入的类或包 <%@ page import = "org.apache.lucene.document.*" %> <%@ page import = "org.apache.lucene.index.*" %> <%@ page import = "org.apache.lu

jdbctemmple-在PLSQL中执行没问题,在JDBC中查询报列名无效

问题描述 在PLSQL中执行没问题,在JDBC中查询报列名无效 大家帮忙看看,这段SQL有什么问题,我在PLSQL中执行没问题,但是用JDBC查的时候就报列名无效的错误. select * from (select T_c_p_i.HOUSEHOLD_ID, T_c_p_i.HOUSEHOLD_HEAD_RELATIONSHIP, T_P_H_A.attribute_meaning as attribute_meaning, T_c_p_i.PERSON_NAME, T_c_p_i.GENDER

合理使用索引查询的七个通用原则

索引查询是数据库中重要的记录查询方法,要不要进入索引以及在那些字段上建立索引都要和实际数据库系统的查询要求结合来考虑,下面给出实际中的一些通用的原则: 1. 在经常用作过滤器的字段上建立索引: 2. 在SQL语句中经常进行GROUP BY.ORDER BY的字段上建立索引: 3. 在不同值较少的字段上不必要建立索引,如性别字段: 4. 对于经常存取的列避免建立索引: 5. 用于联接的列(主健/外健)上建立索引: 6. 在经常存取的多个列上建立复合索引,但要注意复合索引的建立顺序要按照使用的频度来

hql查询报错。。。。实体类问题

问题描述 hql查询报错....实体类问题 hql语句: String hql="from CouponPublishEntity e inner join e.couponpool c where c.owner='"+userId+"' and e.pubid in ("+ids+") "; 报错 [org.jeecgframework.core.common.exception.GlobalExceptionResolver]全局处理异常捕

detachedcriteria-Hiberate 用detached作子查询 报空指针异常

问题描述 Hiberate 用detached作子查询 报空指针异常 DetachedCriteria dc = DetachedCriteria.forClass(Course.class);DetachedCriteria subselect = DetachedCriteria.forClass(CoursePlan.class) .add(Restrictions.eq(""schoolYear"" schoolYear));dc.add(Property.

select-jsp 连接 mysql 查询 报错500

问题描述 jsp 连接 mysql 查询 报错500 源代码: <%@ page contentType="text/html; charset=GB2312"%> <%@ page import="java.util.*,java.sql.*"%> <% request.setCharacterEncoding("GB2312"); //链接数据库程序 Class.forName("org.gjt.mm.

Spring3整合Mybatis3+mybatis-spring1.x查询报错

问题描述 Spring3整合Mybatis3+mybatis-spring1.x查询报错 我在进行Spring(V:3.2.3.RELEASE)+mybatis(V:3.2.4)+mybatis-spring(V:1.1.1)整合.有一个ClassRoom班级类: //班级id private int classId; //班级编码 private String classCode; //班级名字 private String className; //所属学院 private College

sqlite-Android SQLite查询报错

问题描述 Android SQLite查询报错 在运行查询语句时,报错语法错误: inal Cursor c = getContentResolver().query(Provider.GAME_URI new String[]{""CASE WHEN "" +DBHelper.COLUMN_CRE_USER + "" = "" + preferences.getInt(LoginScreen.ID 0) + "&q