lucene全文检索word内容
来源:互联网 发布:知乎怎么邀请好友回答 编辑:程序博客网 时间:2024/05/01 21:47
创建索引 Lucene 3.0+
package test;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.Date;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.DateTools;import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.lucene.index.IndexWriter;import org.apache.lucene.store.Directory;import org.apache.lucene.store.SimpleFSDirectory;import org.apache.lucene.util.Version;import org.apache.poi.hwpf.extractor.WordExtractor;/** * 创建索引 Lucene 3.0+ * @author Administrator * */public class LuceneTest {/** * @param args * @throws IOException */public static void main(String[] args) throws IOException {//保存索引文件的地方String indexDir = "D:\\indexDir";//将要搜索word文件的地方String dateDir = "D:\\dateDir";IndexWriter indexWriter = null;//创建Directory对象Directory dir = new SimpleFSDirectory(new File(indexDir));//创建IndexWriter对象,第一个参数是Directory,第二个是分词器,第三个表示是否是创建,如果为false为在此基础上面修改,第四表示表示分词的最大值,比如说new MaxFieldLength(2),就表示两个字一分,一般用IndexWriter.MaxFieldLength.LIMITED indexWriter = new IndexWriter(dir,new StandardAnalyzer(Version.LUCENE_30),true,IndexWriter.MaxFieldLength.UNLIMITED);File[] files = new File(dateDir).listFiles();for (int i = 0; i < files.length; i++) {Document doc = new Document();InputStream in = new FileInputStream(files[i]);WordExtractor w = new WordExtractor(in);//创建Field对象,并放入doc对象中doc.add(new Field("contents", w.getText(),Field.Store.YES,Field.Index.ANALYZED)); doc.add(new Field("filename", files[i].getName(), Field.Store.YES, Field.Index.NOT_ANALYZED));doc.add(new Field("indexDate",DateTools.dateToString(new Date(), DateTools.Resolution.DAY),Field.Store.YES,Field.Index.NOT_ANALYZED));//写入IndexWriterindexWriter.addDocument(doc);}//查看IndexWriter里面有多少个索引System.out.println("numDocs"+indexWriter.numDocs());indexWriter.close();}}搜索索引 Lucene 3.0+
package test;import java.io.File;import java.io.IOException;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.queryParser.ParseException;import org.apache.lucene.queryParser.QueryParser;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.Query;import org.apache.lucene.search.ScoreDoc;import org.apache.lucene.search.TopDocs;import org.apache.lucene.store.Directory;import org.apache.lucene.store.SimpleFSDirectory;import org.apache.lucene.util.Version;/** * 搜索索引 Lucene 3.0+ * @author Administrator * */public class LuceneSearch {public static void main(String[] args) throws IOException, ParseException {//保存索引文件的地方String indexDir = "D:\\indexDir";Directory dir = new SimpleFSDirectory(new File(indexDir));//创建 IndexSearcher对象,相比IndexWriter对象,这个参数就要提供一个索引的目录就行了IndexSearcher indexSearch = new IndexSearcher(dir);//创建QueryParser对象,第一个参数表示Lucene的版本,第二个表示搜索Field的字段,第三个表示搜索使用分词器QueryParser queryParser = new QueryParser(Version.LUCENE_30,"contents", new StandardAnalyzer(Version.LUCENE_30));//生成Query对象Query query = queryParser.parse("高铁");//搜索结果 TopDocs里面有scoreDocs[]数组,里面保存着索引值TopDocs hits = indexSearch.search(query, 10);//hits.totalHits表示一共搜到多少个System.out.println("找到了"+hits.totalHits+"个");//循环hits.scoreDocs数据,并使用indexSearch.doc方法把Document还原,再拿出对应的字段的值for (int i = 0; i < hits.scoreDocs.length; i++) {ScoreDoc sdoc = hits.scoreDocs[i];Document doc = indexSearch.doc(sdoc.doc);System.out.println(doc.get("filename"));}indexSearch.close();}}
用到的jar包:
lucene-core-3.0.3.jar
poi-3.7-20101029.jar
poi-ooxml-3.7-20101029.jar
poi-ooxml-schemas-3.7-20101029.jar
poi-scratchpad-3.7-20101029.jar
- lucene全文检索word内容
- 使用Lucene进行全文检索(二)---得到有效的内容
- Lucene 全文检索实践
- lucene 全文检索简介
- lucene 全文检索简介
- Lucene 全文检索
- 全文检索Lucene说明书
- 全文检索引擎lucene
- 全文检索LUCENE
- Lucene全文检索1
- lucene全文检索总结 .
- 全文检索--lucene
- lucene全文检索应用
- Lucene与全文检索
- lucene全文检索案例
- 初识全文检索Lucene
- 全文检索 Lucene
- 全文检索(lucene)
- 20120305晴
- ADC和触摸屏接口
- 寻找数组中第K大数---使用堆
- java学习笔记(线程池)
- Spring Security 权限说明
- lucene全文检索word内容
- Spring JSR-250注解
- java web 和文件相关路径问题
- 正则表达式符号(一)
- 在eclipse + tomcat + mysql 的配置中,修改tomcat的端口号不起作用
- JAVA学习——数组
- 《第三周实验报告任务3》
- xp/2003访问网络共享不出现登录框的解决办法
- Nginx负载均衡的实现