www.pudn.com > 200402121144312230.rar > DbQuery.java


package net.ijsp.news.search.database;

/**
 * 

Title:

*

Description:

*

Copyright: Copyright (c) 2003

*

Company: ijsp.net

* @author ccjsmile * @version 1.0 */ import java.util.Iterator; import java.util.ArrayList; import java.io.*; import net.ijsp.news.search.MultiFilter; import net.ijsp.news.search.FieldFilter; import net.ijsp.news.search.Query; import net.ijsp.news.database.*; import net.ijsp.news.news.*; import org.apache.lucene.analysis.*; import org.apache.lucene.analysis.standard.*; import org.apache.lucene.document.*; import org.apache.lucene.store.*; import org.apache.lucene.search.*; import org.apache.lucene.queryParser.*; import org.apache.lucene.index.*; public class DbQuery implements Query { private String queryString ; // 关键字 private ArrayList results = null; // 查询结果,新闻文件名 private static String indexPath = null; private static Searcher searcher; private static Directory searchDirectory = null; private static IndexReader reader; private static long indexLastModified; private int classID = 0; public String getQueryString() { return queryString; } public void setQueryString(String queryString) { this.queryString = queryString; results = null; } /** * @return 符合条件的记录数 */ public int resultCount() { if (results == null) { executeQuery(); } return results.size(); } /** * @return 符合条件的新闻 */ public Iterator results() { if(results == null) { executeQuery(); } return results.iterator(); } /** * @return 符合条件的新闻(分页) */ public Iterator results(int startIndex, int numResults) { if(results == null) { executeQuery(); } int endIndex = startIndex + numResults - 1 ; if (endIndex > results.size() - 1) { endIndex = results.size() - 1; } ArrayList newArrayList = new ArrayList(); for(int i=startIndex; i 0) { hits = searcher.search(comboQuery, multiFilter); } else { hits = searcher.search(comboQuery); } int numResults = hits.length() ; results = new ArrayList(); Factory factory = Factory.getInstance(); for (int i=0; i