`
jianwwpro
  • 浏览: 29586 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Lucene简要笔记

    博客分类:
  • Java
阅读更多
一、 Lucene 概念
以索引文件方式存放在磁盘中
二、 Lucene操作
a) 建立索引
i. 实体类,有主ID,还有其他字段
ii. 建立索引库路径 Directory directory = new FSDirectory.open(”./indexDir”);
iii. 建立分词器 Analyzer analyzer = new StandarAnalyzer(Version.LUCENE_30)
iv. 将实体类转为Document   doc = new Document();doc.add(new Field(“id”,id,Store.YES, Index.Analyzer))
v. 添加 IndexWriter indexWriter  = new IndexWriter(directory,analyzer,MaxFieldLength.LIMITED) ; indexWriter.addDocument(doc)
vi.
b) 搜索
i. 索引库目录
ii. 分词器
iii. 把查询字符转为Query对象QueryParser queryParser = new QueryParser(Version.LUCENE_30,”title”, analyzer),在哪个字段中搜索。queryParser.parse(搜索内容)
iv. 执行查询,得到 中间结果
indexSearcher indexSearcher = new IndexSearcher(directory);
TopDocs topDocs = indexSearcher.search(query, 10)
topDocs.totalHits;
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
v. 处理结果
1. scoreDocs[i].doc;内部编号 indexSearcher.doc(内部编号)
vi. 再将Document转为实体
三、 优化
a) 合并文件optimize() .自动合并,默认最小是2,最大是10,setMergeFactor(3)
b) 在内存中加载数据:
启动时,加载:New RAMDirectory(fsDir)
结束时,往内存中写:indexWriter.addIndexsNoOptimize(ramDir);
四、 分词器:查询与写入需使用同一个分词器---对于中文,引用外加分词器,IKAnalyzer
a) 排序
i. 默认为,相关度
1. 在添加的时候,doc.setBoost(2F)  1F, 0.5F
ii. 自定义字段排序,类似于order by
1. Sort = new Sort(“id”, SortField.INT,true)
2. 使用indexSearcher.searcher(query, filter, n, sort)
b) 高亮
i. 作用:突出显示关键词,显示生成一段摘要
ii. 配置:
1. 摘要大小,默认小100个字
2. 显示效果的前后缀,默认<b>
3. API用法:
a) 生成并配置一个高亮器
i. Highlighter = new Highligher(new SimpleHTMLFormatter(“<font color=’red’>”,”</font>”), new QueryScorer(query))
b) 使用高亮器进行高亮操作
i. text = Highlighter.getBaseFragment(analyzer, fieldname, text)
c) Doc.getField(“content”).setValue(text);
c) 过滤:Filter 的实现 类
i. NumberRangleFilter
d) 各种方式的查询
i. 从使用方式区分:
1. 查询字符串 + QueryParser query:使用查询的语法
2. 直接构建Query对象:构建不同的子类
ii. 从效果上看:
1. 范围查询
2. 关键词查询
a) NumberRangle: id:{   5 TO 10 }
b) TermQuery:条件title:lucene
c) WildcardQuery:通配符 title:lu*n?
d) MathAllDocsQuery:任何 *:*
e) FuzzQuery(new Term(“title”,”luceneX”, 0.7F)):70%  模糊查询title:luceneX~0.9
f) PhraseQuery:短语查询  title:”lucene ? ? 说明”
i. phraseQuery.add(mew Term(“title”,”lucene”,0));
ii. phraseQuery.add(new Term(“title”, “说明”,3));
iii. phraseQuery.setSlop(5)最多不超过5个
g) BooleanQuery:布尔查询 +*.* +ID:[5 TO 10]
i. booleanQuery.add(qury, Occur.NUST)  ....MUST_NOT, SHOULD

五、 工具类
a) NumbericUtils
b) DateTools
六、


基于lucene的框架
类似于Hibernate框架,API也一样
分享到:
评论

相关推荐

    lucene使用总结笔记

    lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记

    lucene文档笔记详解

    **Lucene文档笔记详解** Lucene,源自Apache软件基金会4 Jakarta项目组,是一个备受开发者青睐的开源全文检索引擎工具包。它提供了强大的文本分析、索引构建和搜索功能,但值得注意的是,Lucene本身并不包含完整的...

    Lucene 课堂笔记

    ### Lucene 课堂笔记知识点详解 #### 一、信息检索概览 **1.1 信息检索的概念** 信息检索指的是从海量信息集中筛选出与用户需求相关联的信息。本课程主要探讨文本信息的检索,虽然实际应用中还可能涉及图像、音频...

    Lucene 学习笔记 1

    **Lucene 学习笔记 1** Lucene 是一个全文搜索引擎库,由 Apache 软件基金会开发。它提供了一个可扩展的、高性能的搜索框架,使得开发者能够在其应用程序中集成高级的搜索功能。本篇学习笔记将深入探讨 Lucene 的...

    lucene笔记.pdf

    lucene笔记

    lucene学习笔记

    标题:Lucene学习笔记 描述:Lucene学习笔记,Lucene入门必备材料 知识点: 一、Lucene概述与文档管理策略 Lucene是一款高性能、全功能的文本搜索引擎库,广泛应用于文档检索、全文搜索等场景。为了提升搜索效率...

    lucene笔记

    ### Lucene知识点详解 #### 一、Lucene简介 **1.1 什么是Lucene** Lucene是一个由Apache基金会维护的开源全文检索引擎工具包。它为开发者提供了一个简便的接口,使得在应用程序中实现高效的全文检索功能成为可能...

    lucene课程笔记

    关于lucene开发的工作笔记,详细的介绍了lucene的索引在创建过程中应该主意的一些事项和要求

    Lucene 3.6 学习笔记

    【Lucene 3.6 学习笔记】 Lucene 是一个高性能、全文本搜索库,广泛应用于各种搜索引擎的开发。本文将深入探讨Lucene 3.6版本中的关键概念、功能以及实现方法。 ### 第一章 Lucene 基础 #### 1.1 索引部分的核心...

    传智播客Lucene课程课堂笔记

    传智播客Lucene课程课堂笔记

    Lucene学习笔记(一)Lucene入门实例

    NULL 博文链接:https://kylinsoong.iteye.com/blog/719415

    Lucene学习笔记

    【Lucene学习笔记】 Lucene 是一款开源的全文检索框架,由Apache软件基金会维护,它提供了高效的、可扩展的搜索引擎功能。不同于一个完整的应用程序,Lucene 提供的是一个基础组件,开发者可以将其集成到自己的应用...

    【大搜集:lucene学习资料】---<下载不扣分,回帖加1分,欢迎下载,童叟无欺>

    lucene学习笔记 1 .txt lucene学习笔记 2.txt lucene学习笔记 3 .txt lucene入门实战.txt Lucene 的学习 .txt Lucene-2.0学习文档 .txt Lucene入门与使用 .txt lucene性能.txt 大富翁全文索引和查询的例子...

    lucene阅读笔记

    《Lucene阅读笔记详解》 Lucene,作为Java领域最知名的全文搜索引擎库,因其高效、灵活的特性,被广泛应用于各类信息检索系统中。本文将深入探讨Lucene的核心概念、结构以及关键组件,帮助读者更好地理解和运用这个...

Global site tag (gtag.js) - Google Analytics