运行lucene所需要的JAR包
lucene-core-3.6.0.jar(核心包)
lucene-analyzers-3.6.0.jar(分词器)
lucene-highlighter-3.6.0.jar(高亮)
lucene-memory-3.6.0.jar(高亮)
public class HelloWord {
public static void createIndexFile() {
IndexWriter indexWriter=null;
try {
// 需要的分词器
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);
// 创建的是哪个版本的IndexWriterConfig
IndexWriterConfig indexWriterConfig = new IndexWriterConfig(
Version.LUCENE_36, analyzer);
// 创建系统文件----- ./ 当前路径下的
Directory directory = new SimpleFSDirectory(new File("./indexDir/"));
indexWriter = new IndexWriter(directory,indexWriterConfig);
//获取实体对象
Article article=new Article(11,"最XX的城市","XX");
//indexWriter添加索引
Document doc=new Document();
//文本中添加内容 标题 内容
/*doc.add(new Field("title","中国的首都在哪里",Store.YES,Index.ANALYZED));
doc.add(new Field("content","中国的首都在北京",Store.YES,Index.ANALYZED));*/
doc.add(new Field("id",article.getId().toString(),Store.YES,Index.ANALYZED));
doc.add(new Field("title",article.getTitle().toString(),Store.YES,Index.ANALYZED));
doc.add(new Field("content",article.getContent().toString(),Store.YES,Index.ANALYZED));
//添加到索引中去
indexWriter.addDocument(doc);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(indexWriter!=null){
try {
indexWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//如果查询是需要用到解析器,那解析器必须和创建时的解析器相同
public static void searchIndexFileResult() throws IOException {
List<Article> articles=new ArrayList<Article>();
//得到索引的目录
Directory directory = new SimpleFSDirectory(new File("./indexDir/"));
//根据目录打开一个indexReader
IndexReader indexReader=IndexReader.open(directory);
//System.out.println(indexReader.maxDoc());
//获取最小值的document对象
//Document doc=indexReader.document(0);
//获取最大值的document对象
//Document doc=indexReader.document(indexReader.maxDoc()-1);
//document对象的get(字段名称)方法获取字段的值
/*System.out.println(doc.get("id"));
System.out.println(doc.get("title"));
System.out.println(doc.get("content"));*/
int n=indexReader.maxDoc();
for(int i=0;i<n;i++){
Document doc=indexReader.document(i);
Article article=new Article();
if(doc.get("id")==null){
System.out.println("id为空");
}else{
article.setId(Integer.parseInt(doc.get("id")));
article.setTitle(doc.get("title"));
article.setContent(doc.get("content"));
articles.add(article);
}
}
for(Article article:articles){
System.out.println(article.toString());
}
}
public static void main(String[] args) throws IOException {
// 建立要索引的文件
// createIndexFile();
// 从索引文件中查询数据
searchIndexFileResult();
// 获得结果,然后交由相关应用程序处理
}
}
分享到:
相关推荐
【标题】:“第一个Lucene 3.6 (3.X) 入门实例” 【内容详解】 Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发。它为Java开发者提供了强大的文本检索功能,广泛应用于搜索引擎、信息检索系统等场景。...
这是第二部分,两个部分需要一起下载后,放在同一级目录,解压即可。 目录 第1篇 了解开源软件 第1章 开源软件概述 2 1.1 开源软件的理解 2 1.2 开源软件的定义 3 1.3 开源软件定义的意义 5 1.4 开源软件和其他...
- **去掉第一个opencms**:配置Apache使其不再包含OpenCMS名称。 - **去掉第二个opencms**:进一步优化URL,使得最终的网站地址更加简洁。 - **集成Apache、Tomcat和OpenCms的意义**:通过这种方式,可以实现静态...
1. **基于Lucene自封装实现站内搜索**:虽然此方案具有较高的灵活性,但考虑到开发工作量大且后期维护成本较高,一般不作为首选。 2. **调用第三方搜索引擎API**(如Google、Baidu):这种方式虽然简便快捷,但由于...
1. **基于Lucene自封装实现站内搜索**:这种方式需要较大的开发投入,并且在后续维护和扩展上也会比较复杂,因此在本教材中并未推荐此方法。 2. **调用第三方搜索引擎API**(如Google或Baidu API):虽然这种方式...
Solr支持分布式部署,可以通过ZooKeeper管理多个Solr实例,实现负载均衡和故障恢复。 #### 二、Solr的安装与配置 ##### 2.1 在Tomcat下Solr安装 在Tomcat环境下安装Solr的过程相对简单,主要包括: - **2.1.1 安装...