Lucene
Lucene
- 全文检索引擎工具包
- 文档: Document
- 包含了一个或多个域的容器;
- field:value
- 包含了一个或多个域的容器;
域:
- 域有很多选项
1 | 索引选项、存储选项、域向量使用选项; |
- 索引选项用于通过倒排索引来控制文本是否可被搜索:
1 2 3 4 5 6 7 8 9 | Index:ANYLYZED:分析(切词)并单独作为索引项; Index.Not_ANYLYZED:不分析(不切词),把整个内容当一个索引项; Index.ANYLYZED_NORMS:类似于Index:ANALYZED,但不存储token的Norms(加权基准)信息; Index.Not_ANYLYZED_NORMS:类似于Index:Not_ANALYZED,但不存储值的Norms(加权基准)信息; Index.NO: 不对此域的值进行索引;因此不能被搜索; |
- 存储选项:是否需要存储域的真实值;
1 2 3 4 | title:This is a Notebook. store.YES:存储真实值 store.NO:不存储真实值 |
- 域向量选项用于在搜索期间该文档所有的唯一项都能完全从文档中检索时使用
- 文档和域的加权操作
- 加权计算标准
搜索:
- 查询Lucene索引时,它返回的是一个有序的scoreDoc对象;查询时,Lucene会为每个文档计算出其score
- API
1 2 3 4 5 | IndexSearcher:搜索索引入口; Query及其子类: QueryParser TopDocs ScoreDoc |
Lucene的多样化查询:
- IndexSearcher中的search方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | TermQuery:对索引中的特定项进行搜索;Term是索引中的最小索引片段,每个Term包含了一个域名和一个文本值; title:This is a Desk. owner: Tom Blair description: this is a desk, it's belong to Tom. title: This is a table. owner: Clinton description: this is a desk, it's belong to Clinton. This: (1) (2) Desk: (1) table: (2) TermRangeQuery:在索引中的多个特定项中进行搜索,能搜索指定的多个域; NumericRangeQuery:做数值范围搜索; PrefixQuery:用于搜索以指定字符串开头的项; BooleanQuery:用于实现组合查询;组合逻辑有: AND, OR, NOT; PhraseQuery: WildcardQuery: FuzzyQuery:模糊查询;Levenshtein |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程