Lucene中最简单的索引和搜索示例
package com.jiaoyiping.lucene; import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.*;
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.ParseException;
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.junit.Test; import java.io.IOException;
import java.nio.file.Paths; /**
* Created with IntelliJ IDEA.
* User: 焦一平
* Date: 2015/3/21
* Time: 15:40
* To change this template use File | Settings | File Templates.
*/
public class TestLuceneIndex {
private static String indexPath = "d:\\lucene";
@Test
public void testIndex() throws IOException {
Directory directory = FSDirectory.open(Paths.get(indexPath));
IndexWriter writer = new IndexWriter(directory,new IndexWriterConfig(new StandardAnalyzer()));
Document document = new Document();
//Field有多种实现类可选,不同的实现类有不同的索引策略
document.add(new TextField("name","张三", Field.Store.YES));
document.add(new IntField("age",23,Field.Store.YES));
writer.addDocument(document);
writer.commit();
writer.close();
}
@Test
public void testSearch() throws IOException, ParseException {
Directory directory = FSDirectory.open(Paths.get(indexPath));
IndexReader reader = DirectoryReader.open(directory);
IndexSearcher searcher = new IndexSearcher(reader);
QueryParser queryParser = new QueryParser("name",new StandardAnalyzer());
Query query = queryParser.parse("张三");
TopDocs tds = searcher.search(query, 10);
ScoreDoc[] sds = tds.scoreDocs;
for(ScoreDoc sd: sds){
Document document = searcher.doc(sd.doc);
System.out.println(document.get("name"));
System.out.println(document.get("age"));
}
}
}
以上是Lucene最基本的索引和搜索的使用(基于Lucene5.0版本)
执行构建索引操作之后会在索引存放目录下生成索引文件。执行搜索的时候由IndexReader来读取这些索引文件
Lucene中最简单的索引和搜索示例的更多相关文章
- 使用Lucene.NET实现简单的站内搜索
使用Lucene.NET实现简单的站内搜索 导入Lucene.NET 开发包 Lucene 是apache软件基金会一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和 ...
- 用Lucene.net对数据库建立索引及搜索<转>
用Lucene.net对数据库建立索引及搜索 最近我一直在研究 Lucene.net ,发现Lucene.net对数据库方面建索引的文章在网上很少见,其实它是可以对数据库进行索引的,我闲着没事,写了个 ...
- 在Hadoop分布式文件系统的索引和搜索
FROM:http://www.drdobbs.com/parallel/indexing-and-searching-on-a-hadoop-distr/226300241?pgno=3 在今天的信 ...
- (二)Luence——代码实现索引及搜索
完成需求:使用Lucene完成对数据库中图书信息的索引和搜索功能. 1. 环境准备及工程搭建 1.1 环境准备 mysql5.5+java8+lucene4.10.3(目前最新7.0.1,这里够用就好 ...
- 理解Lucene索引与搜索过程中的核心类
理解索引过程中的核心类 执行简单索引的时候需要用的类有: IndexWriter.Directory.Analyzer.Document.Field 1.IndexWriter IndexWr ...
- Lucene.net 从创建索引到搜索的代码范例
关于Lucene.Net的介绍网上已经很多了在这里就不多介绍Lucene.Net主要分为建立索引,维护索引和搜索索引Field.Store的作用是通过全文检查就能返回对应的内容,而不必再通过id去DB ...
- lucene简介 创建索引和搜索初步
lucene简介 创建索引和搜索初步 一.什么是Lucene? Lucene最初是由Doug Cutting开发的,2000年3月,发布第一个版本,是一个全文检索引擎的架构,提供了完整的查询引擎和索引 ...
- 用Lucene对文档进行索引搜索
问题 现在给出很多份文档,现在对某个搜索词感兴趣,想找到相关的文档. 简单搜索 一种简单粗暴的做法是: 1.读取每个文档:2.找到其中含有搜索词的文档:3.对找到的文档中搜索词出现的次数统计:4.根据 ...
- Lucene第二讲——索引与搜索
一.Feild域 1.Field域的属性 是否分词:Tokenized 是:对该field存储的内容进行分词,分词的目的,就是为了索引. 否:不需要对field存储的内容进行分词,不分词,不代表不索引 ...
随机推荐
- 修改Linux内核参数,减少TCP连接中的TIME-WAIT
一台服务器CPU和内存资源额定有限的情况下,如何提高服务器的性能是作为系统运维的重要工作.要提高Linux系统下的负载能力,当网站发展起来之后,web连接数过多的问题就会日益明显.在节省成本的情况下, ...
- Web API(三):创建Web API项目
在本篇文章中将讲解如何使用Visual Studio创建一个新的ASP.NET Web API项目. 在Visual Studio中有两种方式用于创建Web API项目: 1.创建带MVC的Web A ...
- Arraylist静态初始化
new ArrayList<String>(Arrays.asList("ab","cd","ef"));
- Jqueruy验证 form表单提交之前的中的数据
//---表单提交---- $("#destiation_form").submit(function(){ var from_city_value=$("#from_c ...
- e662. 取的图像的色彩模型
// This method returns the color model of an image public static ColorModel getColorModel(Image imag ...
- e646. 处理鼠标点击事件
component.addMouseListener(new MyMouseListener()); public class MyMouseListener extends MouseAdapter ...
- css -- 通俗理解inline、block、inline-block
display:inline; 内联元素,简单来说就是在同一行显示. display:block; 块级元素,简单来说就是就是有换行,会换到第二行. display:inline-block; 就是在 ...
- CentOS 7在桌面添加快捷方式
直接把 /usr/share/applications 对应的 xxx.desktop 文件复制到桌面就OK!比如要在桌面创建Google Chrome Browser的快捷方式,直接在找到 /usr ...
- console.log()注意事项。
console.log常因不明原因在IE9出现SCRIPT5009: 'console' is undefined (console未被定义) 错误! IE9说console变量未定义? 但F12打开 ...
- jquery-修改、回退结果集
1.end()方法 使用end方法得到上一个结果集 2.addBack()方法 使用addBack()可以得到原结果集与当前结果的合集,也可传入选择器来过滤原结果集