当前位置:编程学习 > JAVA >>

关于lucene3.0的问题

有哪位能指导一下我这个菜鸟?
我是一个用lucene写程序的新手,我的代码如下,现在的问题是查不出东西来,不知道是什么问题,请能者帮之,谢谢!
package com.edu.ccut.bookstore.searcher.webtier;

import com.edu.ccut.bookstore.searcher.persistence.luceneDao;
import com.edu.ccut.bookstore.searcher.service.LuceneManagerFacade;
import com.edu.ccut.bookstore.domain.Book;
import com.edu.ccut.bookstore.domain.UserInfo;

import java.util.List;
import java.io.*;

import org.apache.lucene.document.Field;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.search.*;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.util.Version;
import org.springframework.web.servlet.mvc.AbstractCommandController;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.validation.BindException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class Testlucene extends AbstractCommandController {

    public Testlucene() {
        setCommandClass(UserInfo.class);
    }

    private luceneDao lucenedao;

    public luceneDao getLuceneDao() {
        return lucenedao;
    }

    public void setLucenedao(luceneDao lucenedao) {
        this.lucenedao = lucenedao;
    }

    public Analyzer getAnalyzer() {
        return new StandardAnalyzer(Version.LUCENE_CURRENT);
    }

    private LuceneManagerFacade luceneManagerFacade;

    public void setLuceneManagerFacade(LuceneManagerFacade luceneManagerFacade) {
        this.luceneManagerFacade = luceneManagerFacade;
    }

    protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response,
                                  Object command, BindException e) throws Exception {

        List Books = lucenedao.findAllBookInfo();
        int size = Books.size();
        File dir = new File("c:/index/");

        String[] keyword = {request.getParameter("keyword")};
        IndexWriter writer = new IndexWriter(FSDirectory.open(dir), getAnalyzer(), true, IndexWriter.MaxFieldLength.UNLIMITED);
        Directory ramdirectory = new RAMDirectory();
        IndexWriter RAMWriter = new IndexWriter(ramdirectory, new StandardAnalyzer(Version.LUCENE_CURRENT), true, IndexWriter.MaxFieldLength.UNLIMITED);

        for (int i = 0; i < size; i++) {
            Book book;
            book = (Book) Books.get(i);
            Document doc = new Document();
            doc.add(new Field("isbn", book.getIsbn(), Field.Store.YES, Field.Index.ANALYZED));

            RAMWriter.addDocument(doc);

        }
        RAMWriter.close();
        writer.addIndexesNoOptimize(new Directory[]{ramdirectory});
        writer.close();

        IndexReader reader = IndexReader.open(FSDirectory.open(dir), true);
        Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT); //词法分析器
        String[] fields = {"isbn"};//索引中的字段

        Query query = MultiFieldQueryParser.parse(Version.LUCENE_CURRENT, keyword, fields, analyzer);//索引对应字段和关键字进行匹配
        TopScoreDocCollector collector = TopScoreDocCollector.create(100, true);
        IndexSearcher is = new IndexSearcher(FSDirectory.open(dir), true);
        is.search(query, collector);
        ScoreDoc[] docs = collector.topDocs().scoreDocs;
        for (int i = 0; i < docs.length; i++) {
            Document doc = is.doc(docs[i].doc);// new method is.doc()
            System.out.println(doc.getField("isbn") + "" + docs[i].toString() + "");
        }
        reader.close();
        request.getSession().setAttribute("doc", docs);
        return new ModelAndView("searchResult", "ids", docs);

    }
}
--------------------编程问答-------------------- 查不出什么东西 ?? --------------------编程问答-------------------- StandardAnalyzer 对于中文解析成一个个的字。
你用英文试下能不能找单词。

中文的建议不要用这个分词器了。 --------------------编程问答-------------------- lucene3.0,这个是值得学习的。 --------------------编程问答-------------------- 正在学习、LZ有什么好的学习资料还望共享
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,