Lucene详解
来源:互联网 发布:南风捏脸数据网盘 编辑:程序博客网 时间:2024/06/06 18:10
public class Ans {
public final static String LUCENE_PATH="/WEB-INF/lucene";
private String name;
private String content;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
package com.lucene;
import javax.servlet.http.HttpServletRequest;
import com.lucene.entity.Ans;
public interface Content {
public boolean saveConten(Ans ans,String path);
public String getConet(String name,String path);
}
package com.lucene.impl;
import java.io.File;
import java.io.IOException;
import java.io.Reader;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
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.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
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;
import org.wltea.analyzer.lucene.IKAnalyzer;
import org.wltea.analyzer.lucene.IKTokenizer;
import com.lucene.Content;
import com.lucene.entity.Ans;
public class ContentImpl implements Content{
@Override
public boolean saveConten(Ans ans,String path) {
try {
Directory dir=new SimpleFSDirectory(new File(path));
boolean exits=IndexReader.indexExists(dir);
IKAnalyzer analyzer=new IKAnalyzer(true);
IndexWriter writer=new IndexWriter(dir, new StandardAnalyzer(Version.LUCENE_30), !exits, IndexWriter.MaxFieldLength.LIMITED);
//IndexWriter writer=new IndexWriter(dir, analyzer, !exits, IndexWriter.MaxFieldLength.LIMITED);
Document doc=new Document();
/**
* Field.Store.YES表示存储field
* Field.Index.ANALYZED 进行分词
*/
doc.add(new Field("name",ans.getName(),Field.Store.YES,Field.Index.ANALYZED));
doc.add(new Field("content",ans.getContent(),Field.Store.YES,Field.Index.ANALYZED));
writer.addDocument(doc);
System.out.println(writer.numDocs());
writer.optimize();
writer.close();
return true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
@Override
public String getConet(String name,String path) {
try {
Directory dir=new SimpleFSDirectory(new File(path));
IndexReader reader=IndexReader.open(dir);
IndexSearcher searcher=new IndexSearcher(reader);
IKAnalyzer analyzer=new IKAnalyzer(true);
//searcher.setSimilarity(new IKTokenizer(null, false));
QueryParser query=new QueryParser(Version.LUCENE_30, "name", new StandardAnalyzer(Version.LUCENE_30));
//QueryParser query=new QueryParser(Version.LUCENE_30, "name", analyzer);
Query q=query.parse(name);
TopDocs docs=searcher.search(q, 10);
ScoreDoc[] hits = docs.scoreDocs;
System.out.println(hits.length);
/*for(ScoreDoc doc:hits){
Document document=searcher.doc(doc.doc);
System.out.println(document);
System.out.println(document.getField("name")+"=========="+document.getField("content"));
}*/
for(int i=0;i<hits.length;i++){
Document document=searcher.doc(hits[i].doc);
//System.out.println(document.getValues("name")+""+document.ge);
System.out.println(document.getField("name").stringValue()+"=========="+document.getField("content").stringValue());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
import javax.servlet.http.HttpServletRequest;
import com.lucene.Content;
import com.lucene.entity.Ans;
import com.lucene.impl.ContentImpl;
public class LuceneTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Ans ans=new Ans();
ans.setName("上星期我在哪里?");
ans.setContent("上个星期我在广东...");
//ans.setName("hello");
//ans.setContent("welcome to here");
Content content=new ContentImpl();
LuceneTest test=new LuceneTest();
String path=test.getLucenePath();
//content.saveConten(ans,path);
content.getConet("我在哪里啊???", path);
}
public String getLucenePath(){
//String path=request.getSession().getServletContext().getRealPath(Ans.LUCENE_PATH);
String root=this.getClass().getResource("").getPath();
String path=root.substring(0, root.indexOf("classes"))+"luceneData";
System.out.println("The lucene's file save path is: "+path);
return path;
}
}
- Lucene详解
- lucene详解
- LUCENE Filed详解
- lucene.net 详解
- lucene索引过程详解
- lucene核心类详解
- lucene 3实例详解
- Lucene的索引详解
- lucene核心类详解
- Lucene教程详解
- lucene配置详解
- Lucene教程详解
- lucene 教程详解
- Lucene教程详解
- Lucene查询语法详解
- Lucene教程详解
- Lucene教程详解
- Lucene教程详解
- Python:使用threading模块实现多线程
- 随机生成不重复的随机数
- 两个Mapper初始化输出类错误的心得:Unable to initialize any output collector
- 3-9
- UVA100 The 3n + 1 problem
- Lucene详解
- NFC 学习1 - 规范介绍
- 正确使用HAXM解决Android模拟器运行缓慢的问题
- Struts2配置详解_配置Action
- Java网络编程从入门到精通(32):一个非阻塞I/O的例子
- 06-lucene自定义评分-(分数会很高)和域评分-(查后缀为.txt和.ini)
- 第11题
- 个人google-gson使用总结,JSON的序列化和反序列化
- [安装教程]windows32+apache2.4+mysql5.6+php5.4安装图文啰嗦版