
3、Lucene创建索引库及查询
public class IndexWriterDemo {
/**
* 将即将检索的资源写入索引库
* @param writer
* @throws Exception
*/
public void buildDocs(IndexWriter writer)throws Exception {
writer.deleteAll();//清空索引库里已存在的文档(document)
List<User> list = DataUtil.getUsers();//得到数据资源
System.out.println("buildDocs()->总人数为 :"+list.size());
for(User user :list){
Document doc = new Document();//创建索引库的文档
doc.add(new Field("id",String.valueOf(user.getId()),Store.YES,Index.NO));
doc.add(new Field("name",user.getName(),Store.YES,Index.ANALYZED));
doc.add(new Field("age",String.valueOf(user.getAge()),Store.YES,Index.ANALYZED));
doc.add(new Field("",user.getSex(),Store.YES,Index.ANALYZED));
doc.add(new Field("birthday",String.valueOf(user.getBirthday()),Store.YES,Index.ANALYZED));
writer.addDocument(doc);//将文档写入索引库
}
int count =writer.numDocs();
writer.forceMerge(100);//合并索引库文件
writer.close();
System.out.println("buildDocs()->存入索引库的数量:"+count);
}
/**
* 从索引库中搜索你要查询的数据
* @param searcher
* @throws IOException
*/
public void searcherDocs(IndexSearcher searcher) throws IOException{
Term term =new Term("", "man");//查询条件,意思是我要查找性别为“man”的人
TermQuery query =new TermQuery(term);
TopDocs docs =searcher.search(query, 100);//查找
System.out.println("searcherDoc()->男生人数:"+docs.totalHits);
for(ScoreDoc doc:docs.scoreDocs){//获取查找的文档的属性数据
int docID=doc.doc;
Document document =searcher.doc(docID);
String str="ID:"+document.get("id")+",姓名:"+document.get("name")+",性别:"+document.get("");
System.out.println("人员信息:"+str);
}
}
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-21386-2.html
胆敢犯我中华
不会再收美帝的剥削