初步认识Luence,简单按照官方文档做了个例子,大牛绕开,仅供小白路过参考。如有错误,欢迎指正批评。

建一个简单工程,并且加入这几个小奶瓶,如下图:

注:版本不同,可能对jdk的需求是不同的,这个需要注意,我在尝试的6.1.0的时候,在jdk1.7下会报错,在java8下就没问题。5.x的在1.7下应该没问题,具体需要自行百度。

然后根据官网例子,稍加修改,如下:本例子基于内存存储

//创建词法分析器

Analyzer analyzer = new StandardAnalyzer();
//确定索引文件的位置,方式如下为 内存存储
Directory directory = new RAMDirectory();
//Directory directory = FSDirectory.open("/tmp/testindex"); 本地文件存储

//索引文件的写入
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter iwriter = new IndexWriter(directory, config);

//创建文档
Document doc = new Document();
String text = "This is the text to be indexed.";
doc.add(new Field("fieldname", text, TextField.TYPE_STORED));
String text1 = "This is the text to be indexed1.";
doc.add(new Field("testcontent", text1, TextField.TYPE_STORED));

Document doc1 = new Document();
String text2 = "This is the text to be indexed2.";
doc1.add(new Field("fieldname", text2, TextField.TYPE_STORED));

Document doc2 = new Document();
String text3 = "This is the text to be indexed3.";
doc2.add(new Field("fieldname", text3, TextField.TYPE_STORED));
//将文档写入索引操作流
iwriter.addDocument(doc);
iwriter.addDocument(doc1);
iwriter.addDocument(doc2);
iwriter.close();

System.out.println("----");

//索引目录流对象创建
DirectoryReader ireader = DirectoryReader.open(directory);
//创建搜索对象
IndexSearcher isearcher = new IndexSearcher(ireader);

//查询解析器,第一个参数是默认的搜索域
QueryParser parser = new QueryParser("fieldname", analyzer);
Query query = parser.parse("indexed");

//模糊查询
Term term = new Term("fieldname","indexed");
FuzzyQuery fuzzyQuery=new FuzzyQuery(term);

//执行搜索,取前一百条符合记录的数据//这里使用fuzzyQuery进行模糊查询,如果用query 只会出现一种结果“indexed”

TopDocs top = isearcher.search(fuzzyQuery, 100);

ScoreDoc[] hits = top.scoreDocs;


for (int i = 0; i < hits.length; i++) {
  Document hitDoc = isearcher.doc(hits[i].doc);
  System.out.println("[Document="+hitDoc+",file:"+hitDoc.get("fieldname")+"].");
  System.out.println("查询出的结果是:"+hitDoc.get("fieldname"));
}

ireader.close();
directory.close();

运行结果如下:

Luence简单实现1的更多相关文章

  1. Luence简单实现2

    上一篇是基于内存存储的,这次的例子是基于本地存储索引库. 上一次的代码稍微修改,代码如下: //创建词法分析器 Analyzer analyzer = new StandardAnalyzer(); ...

  2. 分布式搜索ElasticSearch构建集群与简单搜索实例应用

    分布式搜索ElasticSearch构建集群与简单搜索实例应用 关于ElasticSearch不介绍了,直接说应用. 分布式ElasticSearch集群构建的方法. 1.通过在程序中创建一个嵌入es ...

  3. 【造轮子】打造一个简单的万能Excel读写工具

    大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...

  4. Fabio 安装和简单使用

    Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...

  5. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  6. 哪种缓存效果高?开源一个简单的缓存组件j2cache

    背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...

  7. 在Openfire上弄一个简单的推送系统

    推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...

  8. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  9. 使用 Nodejs 搭建简单的Web服务器

    使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块. ...

随机推荐

  1. ueditor 单独图片上传 转载

    <body> <script type="text/javascript"> //这个是图片上传的,网上还有附件上传的 (function($) { var ...

  2. Hadoop集群“WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable”解决办法

    Hadoop集群部署完成后,经常会提示 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platfo ...

  3. JavaScript语言基础-环境搭建

    我们要想编写和运行JavaScript脚本,则需要:JavaScript编辑工具和JavaScript运行测试环境.下面我们分别介绍一下.JavaScript编辑工具JavaScript编辑工具最简单 ...

  4. 实例介绍Cocos2d-x精灵菜单和图片菜单

    精灵菜单类是MenuItemSprite,图片菜单类是MenuItemImage.由于MenuItemImage继承于MenuItemSprite,所以图片菜单也属于精灵菜单.为什么叫精灵菜单呢?那是 ...

  5. IoC容器的初始化过程

    1.简单来说,IoC容器的初始化是由前面介绍的refresh()方法来启动的,这个方法标志着IoC容器的正式启动. 2.具体来说,这个启动包括BeanDefinition的Resource定位.载入和 ...

  6. 8个WEB前端创意HTML5动画应用精选

    和十几年前相比,现在的网页加入了很多动画元素,从之前的Flash到现在的HTML5,动画样式越来越丰富,动画制作也越来越便捷.本文精选了几款非常富有创意的HTML5动画应用,欣赏一下吧. 1.HTML ...

  7. ArcSDE for Microsoft SQL Server Post Installation图解(转)

    ArcSDE for Microsoft SQL Server Post Installation图解 使用ArcSDE作为空间数据引擎时,经常遇到服务无法启动的情况(启动服务时提示:本地计算机上的a ...

  8. 修改 timezone

    1.通过命令修改 1.Set Time, Date Timezone in Linux from Command Line or Gnome | Use ntp 2.Use TZ database 3 ...

  9. CentOS6.5升级手动安装gcc4.8.2

    一.简易安装 操作环境 CentOS6.5 64bit,原版本4.4.7,不能支持C++11的特性~,希望升级到4.8.2 不能通过yum的方法升级,需要自己手动下载安装包并编译 1.1 获取安装包并 ...

  10. file与 byte[] 互转

    byte 转file String filepath="D:\\"+getName();          File file=new File(filepath);        ...