package org.test.lucence;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryparser.classic.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.FSDirectory;
import org.apache.lucene.util.Version;
public class HelloLucence {
/**
* 索引
*/
public static void index(){
IndexWriter iwriter=null;
try{
//1.创建Directory
//Directory directory=new RAMDirectory();
Directory directory=FSDirectory.open(new File("indexs\\index01"));
//2.创建IndexWriter
IndexWriterConfig iwc=new IndexWriterConfig(Version.LUCENE_4_9,new StandardAnalyzer(Version.LUCENE_4_9));
iwriter=new IndexWriter(directory,iwc);
File file=new File("docs");
for(File f:file.listFiles()){
//3.创建Document
Document doc=new Document();
//4.为Document添加field
doc.add(new TextField("content",new FileReader(f)));
doc.add(new StringField("filename",f.getName(),Field.Store.YES));
doc.add(new StringField("filepath",f.getCanonicalPath(),Field.Store.YES));
//5.通过 IndexWriter添加index到document
iwriter.addDocument(doc);
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(iwriter!=null){
try {
//6.关闭IndexWriter
iwriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 索引
*/
public static void searcher(){
try{
//1.创建Directory
Directory directory=FSDirectory.open(new File("indexs\\index01"));
//2.创建IndexReader
IndexReader ireader=DirectoryReader.open(directory);
//3.根据IndexReader创建IndexSearcher
IndexSearcher searcher=new IndexSearcher(ireader);
//4.创建搜索的Query
QueryParser parser=new QueryParser(Version.LUCENE_4_9,"content",new StandardAnalyzer(Version.LUCENE_4_9));
//搜索content域中包含有HIVE的
Query query=parser.parse("HIVE");
//5.使用IndexSearcher根据Query进行搜索并返回TopDocs
TopDocs tds=searcher.search(query, 10);
//6.根据TopDocs获取ScoreDoc对象
ScoreDoc[] sds=tds.scoreDocs;
for(ScoreDoc sd:sds){
//7.根据IndexSearcher和ScoreDoc获取具体的Document对象
Document doc=searcher.doc(sd.doc);
//8.根据Document对象获取需要的值
String filename=doc.get("filename");
String filepath=doc.get("filepath");
System.out.println(filename+"["+filepath+"]");
}
//9.关闭IndexReader
ireader.close();
}catch(Exception e ){
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
HelloLucence.index();
HelloLucence.searcher();
}
}
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryparser.classic.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.FSDirectory;
import org.apache.lucene.util.Version;
public class HelloLucence {
/**
* 索引
*/
public static void index(){
IndexWriter iwriter=null;
try{
//1.创建Directory
//Directory directory=new RAMDirectory();
Directory directory=FSDirectory.open(new File("indexs\\index01"));
//2.创建IndexWriter
IndexWriterConfig iwc=new IndexWriterConfig(Version.LUCENE_4_9,new StandardAnalyzer(Version.LUCENE_4_9));
iwriter=new IndexWriter(directory,iwc);
File file=new File("docs");
for(File f:file.listFiles()){
//3.创建Document
Document doc=new Document();
//4.为Document添加field
doc.add(new TextField("content",new FileReader(f)));
doc.add(new StringField("filename",f.getName(),Field.Store.YES));
doc.add(new StringField("filepath",f.getCanonicalPath(),Field.Store.YES));
//5.通过 IndexWriter添加index到document
iwriter.addDocument(doc);
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(iwriter!=null){
try {
//6.关闭IndexWriter
iwriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 索引
*/
public static void searcher(){
try{
//1.创建Directory
Directory directory=FSDirectory.open(new File("indexs\\index01"));
//2.创建IndexReader
IndexReader ireader=DirectoryReader.open(directory);
//3.根据IndexReader创建IndexSearcher
IndexSearcher searcher=new IndexSearcher(ireader);
//4.创建搜索的Query
QueryParser parser=new QueryParser(Version.LUCENE_4_9,"content",new StandardAnalyzer(Version.LUCENE_4_9));
//搜索content域中包含有HIVE的
Query query=parser.parse("HIVE");
//5.使用IndexSearcher根据Query进行搜索并返回TopDocs
TopDocs tds=searcher.search(query, 10);
//6.根据TopDocs获取ScoreDoc对象
ScoreDoc[] sds=tds.scoreDocs;
for(ScoreDoc sd:sds){
//7.根据IndexSearcher和ScoreDoc获取具体的Document对象
Document doc=searcher.doc(sd.doc);
//8.根据Document对象获取需要的值
String filename=doc.get("filename");
String filepath=doc.get("filepath");
System.out.println(filename+"["+filepath+"]");
}
//9.关闭IndexReader
ireader.close();
}catch(Exception e ){
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
HelloLucence.index();
HelloLucence.searcher();
}
}