首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

Lucene 目录检索出错 (新手分少别介意)

2013-01-08 
Lucene 索引检索出错 (新手分少别介意)我用lucene ver3.0.1建立了索引,但是检索总是出错。用lucene 3.0带的

Lucene 索引检索出错 (新手分少别介意)
我用lucene ver3.0.1建立了索引,但是检索总是出错。用lucene 3.0带的demo检索程序没问题,但是那个程序很长,有些看不懂,就像写个稍微简单点的。从网上找了几个例程,都有错误。这里贴一下检索的代码和错误提示,麻烦给看看

import java.io.File;
import java.io.IOException;   

import org.apache.lucene.analysis.Analyzer;   
import org.apache.lucene.analysis.standard.StandardAnalyzer;   
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryParser.ParseException;   
import org.apache.lucene.queryParser.QueryParser;   
import org.apache.lucene.search.Searcher;
import org.apache.lucene.search.TopDocs;   
import org.apache.lucene.search.IndexSearcher;   
import org.apache.lucene.search.Query;   
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
  
public class TestQuery {   
    public static void main(String[] args) throws IOException, ParseException {   
        TopDocs hits = null;    //以前是Hits类,3.0.1好像改成TopDocs
        String index = "D:\\workspace\\lucnentest\\index";  // 设置索引位置
        String field = "contents";    //检索域
        String queryString = "education";   //检索词
        Query query = null;   
        IndexReader reader = IndexReader.open(FSDirectory.open(new File(index)), true); // only searching, so read-only=true
        Searcher searcher = new IndexSearcher(reader);
        
        //原来代码 Analyzer analyzer = new StandardAnalyzer();
        Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
        try {   
            //原来代码 QueryParser qp = new QueryParser("contents",field,analyzer); 
            QueryParser qp = new QueryParser(Version.LUCENE_30, field, analyzer);
            query = qp.parse(queryString);   
        } catch (ParseException e) {   
        }   
        if (searcher != null) {   
            hits = searcher.search(query, 100);   
            if (((CharSequence) hits).length() > 0) {   
                System.out.println("找到:" + ((CharSequence) hits).length() + " 个结果!");   
            }   


        }   
    }   
  


运行时的错误提示是:
Exception in thread "main" java.lang.ClassCastException: org.apache.lucene.search.TopDocs
at TestLucene.TestQuery.main(TestQuery.java:38)

38行是上面加黑、加粗的地方。这行原来的代码是
if (hits.length() > 0) {   
但是length下面显示波浪小红线

谢谢了!已经弄了好几天了都没有头绪,分也不多了!

[解决办法]
 TopDocs hits = null;,你在前面已经声明了hits是topdocs 对象,后台转成CharSequence当然不行了,用hits.totalHits 得到总数

热点排行