lucence

借助基础的lucence框架理解搜索引擎的原理~~ ref: Lucene in Action:

信息超负荷问题解决方案: 新的用户接口/智能代理 Lucene是一个高性能,可伸缩的信息搜索库,可以为应用程序添加索引和搜索能力. 版本: java/Perl/Python/C++/net 搜索引擎的核心是索引 搜索的质量用精确度和召回率来描述,召回率衡量系统搜索到相关文档的能力,精确度描述过滤不相关的能力

正文摘要文件(存储域,名称,偏移位置,域数据) 倒排信息文件(字典,文本,所在域,索引,词频) 顺排信息文件(词向量索引,向量域信息) 打分相关文件

实现:

  1. LRUcache基于linkedhashmap,多线程需要用collections.synchronized.map包装一下
  2. 默认打分公式基于空间向量模型(Query->weight->scorer->sumScorer)

对结构化数据搜索:SQL,元数据,windows搜索对文件名,类型,修改时间 对非结构化数据搜索:windows搜索,grep,搜索引擎–>全文搜索:顺序扫描法,索引法

反向索引: 字符串到文件的映射(词典->倒排表)

创建索引:

  1. Tokenizer分词: 文档->单词,去标点符号,去停词
  2. Linguistic Processor语言处理组件: 处理词元(小写,词根stemming/lemmatization)
  3. Indexer:索引组件: 将Term创建字典.排序,合并为倒排链表

搜索:

  1. 用户输入查询语句(AND/OR/NOT)
  2. 词法分析,语法分析,语言处理(同indexer)
  3. 搜索索引,负荷语法树的文档(链表合并->做差)
  4. 文档和查询语句的相关性(relevance)排序 a. 计算词的权重tf, df b. 空间向量模型判断VSM文档的相关性 http://blog.csdn.net/forfuture1978/archive/2009/10/22/4711308.aspx 盘古分词(lucene .net2.9)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • picu项目 golang使用体会

    radaren
  • matplotlib

    radaren
  • lua

    数学库由算术函数的标准集合组成,比如三角函数库(sin, cos, tan, asin, acos, etc.), 幂指函数(exp, log, log10),...

    radaren
  • Google与Pixar开发Draco支持USD格式 加速3D对象传输

    文 / F. Sebastian Grassia, Pixar and Jamieson Brettle, Chrome Media

    LiveVideoStack
  • 数据库进阶2 Mysql高并发优化

    如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能。所以,在一个系统开始实施之前,完备的数据库模...

    范蠡
  • 关于Activity之间传送数据

    听着music睡
  • 从AVB到TSN - 时效性网络来了

    传统以太网的传输机制类似于公路运输,从一个地方去到另一地方所需的时间取决于沿途公路的拥堵情况,时延往往波动较大并具有不确定性。随着以太网应用的推广,音视频应用首...

    曲奇泡芙
  • 【mysql系列】细谈explain执行计划之“谜”

    我们先了解一下explain语法和相关理论知识。 语法: EXPLAIN SELECT select_options;

    沁溪源
  • 合格的程序员,是如何写得一手好SQL???

    博主负责的项目主要采用阿里云数据库MySQL,最近频繁出现慢SQL告警,执行时间最长的竟然高达5分钟。导出日志后分析,主要原因竟然是没有命中索引和没有分页处理。...

    挨踢小子部落阁
  • 如何去写一手好 SQL?

    来源:编码砖家 https://www.cnblogs.com/xiaoyangjia/p/11267191.html

    猴哥yuri

扫码关注云+社区

领取腾讯云代金券