package com.lucene.helloworld;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Filter;
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.junit.Test;
import com.lucene.utils.LuceneUtils;
public class HelloWorld {
private String filePath="F:\\tasks\\workspace2\\LucenePro\\luceneDatasource\\jincm_中国.txt";
private String indexPath="F:\\tasks\\workspace2\\LucenePro\\luceneIndex";
private Analyzer analyzer=new StandardAnalyzer();
@Test
public void createIndex() throws Exception{
Document doc=LuceneUtils.file2Document(filePath);
IndexWriter indexWriter=new IndexWriter(indexPath, analyzer,true,MaxFieldLength.LIMITED);
indexWriter.addDocument(doc);
indexWriter.close();
}
@Test
public void search()throws Exception {
String queryString="jincm";
String[] fields={"name","content"};
QueryParser queryParser=new MultiFieldQueryParser(fields, analyzer);
Query query=queryParser.parse(queryString);
IndexSearcher indexSearcher=new IndexSearcher(indexPath);
Filter filter=null;
TopDocs topDocs=indexSearcher.search(query,filter,10000);
System.out.println("总共有【" + topDocs.totalHits + "】条匹配结果");
for(ScoreDoc scoreDoc:topDocs.scoreDocs){
int docIndex=scoreDoc.doc;
Document doc=indexSearcher.doc(docIndex);
System.out.println("<------------------------------");
System.out.println(doc.get("name"));
System.out.println(doc.get("content"));
System.out.println(doc.get("size"));
System.out.println(doc.get("path"));
System.out.println("------------------------------>");
}
}
}
package com.lucene.utils;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.NumberTools;
public class LuceneUtils {
public static Document file2Document(String filePath){
File file=new File(filePath);
Document doc=new Document();
doc.add(new Field("name", file.getName(), Store.YES, Index.ANALYZED));
doc.add(new Field("content",readFileContent(file), Store.YES, Index.ANALYZED));
doc.add(new Field("size", NumberTools.longToString(file.length()), Store.YES, Index.NOT_ANALYZED));
doc.add(new Field("path", file.getAbsolutePath(), Store.YES, Index.NOT_ANALYZED));
return doc;
}
public static String readFileContent(File file){
try {
BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(file)));
StringBuffer content=new StringBuffer();
for(String line=null;(line=reader.readLine())!=null;){
content.append(line);
}
return content.toString();
} catch (Exception e) {
// TODO Auto-generated catch block
throw new RuntimeException();
}
}
}
分享到:
相关推荐
开发自己的搜索引擎--Lucene+Heritrix
Laravel开发-laravel-lucene-search Laravel4.2软件包,用于基于Zendsearch-Lucene的雄辩模型的全文搜索。
《开发自己的搜索引擎--Lucene+Heritrix》讲解搜索引擎开发的畅销书
开发自己的搜索引擎---Lucene+Heritrix(第2版)。超星导出来的,非常清晰。CSDN上传限制60MB,点击我的用户名查看part2。
开发自己的搜索引擎--Lucene 2.0+Heritrix(爬虫)第10章
揭秘搜索引擎技术实战--Lucene%26Java精华版_....pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
开发环境搭建,分析lucene4的中文分词原理,深入讲了lucenne4的系统架构,分析lucene4索引实现原理及性能优化,了解关于lucene4的搜索算法优化及利用java结合lucene4实现类百度文库的全文检索功能等相对高端实用的...
【别下这个哈,,】 【完整版的在】《开发自己的搜索引擎-Lucene 2.0 Heritrix》 http://download.csdn.net/source/1756566 文件大小:24.60 MB
couchdb-lucene-<版本>.zip cd couchdb-lucene-<版本> ./bin/运行 该 zip 文件包含您需要的所有 couchdb-lucene 代码、依赖项、启动脚本和配置文件,因此请将其解压缩到您希望安装 couchdb-lucene 的任何位置...
一步一步跟我学习lucene是对近期做lucene索引的总结,
【完整光盘24.5M】开发自己的搜索引擎-Lucene 2.0+Heritrix.zip 评论+评分后即可返回1分。。O(∩_∩)O 。。谢谢支持。。
开发环境搭建,分析lucene4的中文分词原理,深入讲了lucenne4的系统架构,分析lucene4索引实现原理及性能优化,了解关于lucene4的搜索算法优化及利用java结合lucene4实现类百度文库的全文检索功能等相对高端实用的...
Lucene.Net是一个搜索引擎库,C#编写的。NET运行时用户和有针对性的。Lucene搜索库是基于倒排索引。Lucene.Net有三个主要目标: 1.保持现有生产线,由线端口从Java到C#,完全自动化和商品化的过程中,该项目可以...
使用它来开自己的搜索引擎,可以省去很多麻烦,lucene帮助我们实现的建索引、分词可以为我们的软件增色很多
Lucene实现全文搜索,支持英文、模糊和智能查询
java全文搜索lucene-3.0.0-src+lib.zip
Apache Lucene是一个开放源程序的搜索引擎,利用它可以轻易地为Java软件加入全文搜索功能。Lucene的最主要工作是替文件的每一个字作索引,索引让搜索的效率比传统的逐字比较大大提高,Lucen提供一组解读,过滤,分析...