Atitit lucence 使用总结

目录

1. 基本概念 1

1.1.   Index:索引库,文档的集合组成索引。 1

2. 建立索引 2

2.1. Api查询 2

2.2. Dsl查询 3

Merge branch 'master' of https://gitee.com/attilax/FulltxtLucenePrj

# Conflicts:

# bin4/com/attilax/archive/bitUtil.class

# bin4/fulltxt/luceneUtil$1.class

# bin4/fulltxt/luceneUtil.class

# src/com/attilax/archive/bitUtil.java

  1. 基本概念

    1.   Index:索引库,文档的集合组成索引。

和一般的数据库不一样,Lucene不支持定义主键,在Lucene中不存在一个叫做Index的类,通过IndexWriter来写索引,通过IndexReader来读索引。索引库在物理形式上一般是位于一个路径下的一系列文件

2、  分析器:一段有意义的文字需要通过Analyzer分析器分割成一个个词语后才能按关键字搜索,StandardAnalyzer是Lucene中最常用的分析器。为了达到更好的搜索效果,不同的语言可以使用不同的搜索器(如CnAnalyzer是一个主要处理中文的分析器)。

3、  Analyzer返回的结果是一串Token,Token包含一个代表词本身含义的字符串和该词在文章中相应的起止偏移位置,Token还包含一个用来存储词类型的字符串。

4、  一个Document代表索引库中的一条记录,也叫做文档。要搜索的信息封装成Document后通过IndexWriter写入索引库,调用Searcher接口按关键词搜索后,返回的也是一个封装后的Document列表。

---------------------

5、  一个Document可以包含多个列,叫做Field。例如一篇文章可以包含“标题”、“正文”、“修改时间”等Field。创建这些列对象以后,可通过Document的add方法增加这些列。与一般数据库不同,一个文档的一个列可以有多个值,例如一篇文档既可以术语互联网类,又可以属于科技类。

6、  Term是搜索语法的最小单位,复杂的搜索语法会分解成一个Term查询,他表示文档的一个词语,Term由两部分组成:它表示的词语和这个词语所出现的Field。

---------------------

D:\0workspace\FulltxtLucenePrj

/FulltxtLucenePrj/src/fulltxt/luceneUtil.java

  1. 建立索引

Directory directory_index = FSDirectory.open(Paths.get(indexDir));

// 创建索引 writer

IndexWriter IndexWriter = new IndexWriter(directory_index,  new IndexWriterConfignew IKAnalyzer()));

Document doc = new Document();

doc.add(new TextField("f", f.getName(), org.apache.lucene.document.Field.Store.YES));

doc.add(new TextField("f_fullpath", f.getAbsolutePath(), org.apache.lucene.document.Field.Store.YES));

doc.add(new TextField("txt", t, org.apache.lucene.document.Field.Store.NO));

String r = String.valueOf(IndexWriter.addDocument(doc));

  1. Api查询

dir = FSDirectory.open(Paths.get(indexDir));

IndexReader reader = DirectoryReader.open(dir);

return new IndexSearcher(reader);

/*

* String expressStr="+txt:webdav +txt:ftp";

*/

public  void  Search(IndexSearcher IndexSearcher1,  String expressStr,Consumer consumer1) throws ParseExceptionIOException {

int count = 500;

// String searchField = "txt";

// String kws = " webdav  编码  艾提拉";

String fieldName = "txt";

QueryParser QueryParser1 = new QueryParser(fieldName, new SimpleAnalyzer());

Query query   = QueryParser1.parse(expressStr );

TopDocs topDocs =  IndexSearcher1.search(query, count);//limit 5 count

for (ScoreDoc scoreDoc : topDocs.scoreDocs) {

Document document   = IndexSearcher1.doc(scoreDoc.doc);

consumer1.accept(document);

}

}

  1. Dsl查询

public void testSearch() throws Exception {

luceneUtil luceneUtil = new luceneUtil();

System.out.printlnJSON.toJSONString(  luceneUtil.Search()));

String indexDir = "./articles522/";

IndexSearcher IndexSearcher1= luceneUtil.getIndexSearcher1(indexDir);

List li=  luceneUtil.select("f,f_fullpath,txt").from(IndexSearcher1).where$(  fld("txt").contain("webdav") ).andfld("txt").contain("数据库") ).build()  ).exec();

System.out.printlnJSON.toJSONString(li));

Atitit lucence 使用总结 目录 1. 基本概念 1 1.1.   Index:索引库,文档的集合组成索引。 1 2. 建立索引 2 2.1. Api查询 2 2.2. Dsl查询 3相关推荐

  1. es查询索引java_elasticsearch查询篇索引映射文档数据准备

    elasticsearch查询篇索引映射文档数据准备 我们后面要讲elasticsearch查询,先来准备下索引,映射以及文档: 我们先用Head插件建立索引film,然后建立映射 { "p ...

  2. ElasticSearch查询篇索引映射文档数据准备

    elasticsearch查询篇索引映射文档数据准备 我们后面要讲elasticsearch查询,先来准备下索引,映射以及文档: 我们先用Head插件建立索引film,然后建立映射 POST http ...

  3. ElasticSearch学习篇2_Rest格式操作(索引、文档)、文档的简单操作(增、删、改、查)、复杂查询操作(排序、分页、高亮)

    目录 关于索引的基本操作 声明索引.字段类型 获取索引信息举栗 删除索引举栗 拓展命令 关于文档的基本操作 插入文档 删除文档 修改文档 获取文档 根据id获取 根据条件获取 带json参数体的查询( ...

  4. elasticsearch学习笔记——二.querystring查询document方式与dsl查询document方式

    // 1.创建test_serach索引,指定主要分片数量,副本分片数量,文档中字段的数据类型,分词器,是否作为搜索条件 PUT test_search { "settings": ...

  5. elasticsearch索引、文档、映射等概念

    1.文档(document) 文档是存储在Elasticsearch中的一个JSON格式的字符串.它就像在关系数据库中表的一行.每个存储在索引中的一个文档都有一个类型和一个ID,每个文档都是一个JSO ...

  6. wps如何在目录里面打省略号_在wps中怎么让文档目录的省略号对齐 - 卡饭网

    怎么在WPS中快速统计文档字数? 怎么在WPS中快速统计文档字数? 相信很多小伙伴在日常办公中都有用到WPS,在其中如何才能统计文档字数呢?方法很简单,下面小编就来为大家介绍.具体如下:1. 首先,打 ...

  7. wps word文档生成目录的时候显示断裂会生成大纲怎么办_文档里的图片太多?Word一键即可提取所有图片!你还在另存为吗...

    我们有时候需要将一些文档中的图片提取出来,很多小伙伴都只是傻傻地另存为,遇到PDF文档的时候就不知道怎么办了!其实想要提取Word.PDF文件里的图片方法有很多,今天小编就来跟大家分享一些实用的小技巧 ...

  8. 分布式搜索引擎01-elasticsearch-介绍、倒排索引原理、概念(文档和字段,索引和映射)、安装、索引库crud、文档crud、RestAPI(java代码实现es的crud)

    文章目录 分布式搜索引擎01 0.学习目标 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 1.1.2.ELK技术栈 1.1.3.elasticse ...

  9. 微服务03 分布式搜索引擎 elasticsearch ELK kibana RestAPI 索引库 DSL查询 RestClient 黑马旅游

    分布式搜索引擎01 -- elasticsearch基础 0.学习目标 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是 ...

  10. 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作

    大数据技术之_20_Elasticsearch学习_01 一 概述 1.1 什么是搜索? 1.2 如果用数据库做搜索会怎么样? 1.3 什么是全文检索和 Lucene? 1.4 什么是 Elastic ...

最新文章

  1. java多线程 门闩_Java线程与并发编程实践----同步器(倒计时门闩,同步屏障)...
  2. python输出中文加数字_python处理“#”开头加数字的html字符方法
  3. Mysql数据库的打开和关闭
  4. luogu P3293 [SCOI2016]美味
  5. MySQL(一)——安装、创建数据库表、DML语言
  6. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之启动另一个Activity
  7. mysql table keys_MySQL Explain详解
  8. jQuery插件编写基础之“又见弹窗”
  9. PostGIS mysql_fdw安装(Linux)
  10. C语言pop_back用法,【C语言】单链表的所有操作的实现(包括PopBack、PushBack、PopFront、PushFront、Insert)...
  11. Python 技巧(三)—— list 删除一个元素的三种做法
  12. java dht 爬虫_P2P中DHT网络爬虫
  13. [从零开始学FPGA编程-4]:快速入门篇 - 操作步骤1 - 常见可编程器件PROM、PLA、PAL、GAL、CPLD、FPGA
  14. EXCEL取消科学计数法
  15. 项目管理工具四、有效管理的PDCA原则
  16. O2优化后,程序freez了(变量的读取过程被优化,使用volatile可解决)
  17. Java使用Tomcat服务器打开jsp等文件出现源码的解决办法
  18. Nvidia AGX Xavier Jetson 开机配置
  19. 一键解锁iPhone屏幕密码
  20. Git 到底是个什么东西?

热门文章

  1. 台式计算机文件打不开怎么回事,电脑文件打不开怎么回事
  2. mysql+int+类型如何模糊搜索_mysql全文模糊搜索MATCH AGAINST方法示例
  3. Everything常见问题及搜索技巧
  4. iOS - 蓝牙开发(中心模式)
  5. 关于文本框字数的限制以及动态显示剩余字数
  6. topcoder srm 445 div1
  7. Heartbeat+DRBD+NFS 构建高可用的文件系统
  8. 用php的ob_start()控制浏览器cache
  9. Mybatis-学习笔记(3)mapper配置文件
  10. 个人作业7 第一阶段SCRUM冲刺(九)