关于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 开发