全文搜索

在 Emacs 中集成 Recoll 全文搜索

这一生的挚爱 提交于 2019-12-01 22:00:29
在 Emacs 中集成 Recoll 全文搜索 /*--> */ /*--> */ 在 Emacs 中集成 Recoll 全文搜索 目录 1. 需求 2. 解决办法 1 需求 时间一长,平常收集的资料就多了,于是使用了 recoll 全文搜索,但是在Emacs 中工作时 间多,搜索要在 Emacs 和 Recoll 图形界面中来回切换,很不方便。而且,如果本地文件 中找不到,要用搜索引擎到网上搜索的话就更麻烦了,于是想能不能把这需要整合一下,平 时找东西直接开 Recoll 搜索,如果没有的话可以一键切到 Google 搜索结果。 2 解决办法 原来的办法 这是在网上搜索到的办法,最大的问题就是你看不到摘要,只有在 minibuffer 中看文件名 猜其中有啥,如果不是你想要的东西,还得再输入搜索字符串,重来一回,比在 recoll 图形界面中还要麻烦。 (defun counsel-recoll-function (string &rest _unused) "Issue recallq for STRING." (if (< (length string) 3) (counsel-more-chars 3) (counsel--async-command (format "recollq -b '%s'" string)) nil)) (defun counsel-recoll

Lucene及全文搜索实现原理

痴心易碎 提交于 2019-12-01 13:07:48
Lucene及全文搜索实现原理 全文搜索 全文搜索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。全文搜索搜索引擎数据库中的数据。 全文搜索的过程主要分为两个部分,索引的建立以及索引的搜索。 国内外的全文搜索常用的检索模型主要有向量模型,布尔模型等。 布尔模型 布尔模型是第一个信息检索的模型,可能也是最受争论的模型。它利用布尔运算符连接各个检索词,然后由计算机进行逻辑运算,找出所需信息的一种检索方法。布尔定义了三种基本操作:AND,OR和NOT。 概率检索模型 多是建立在相关性理论基础上,基于对相关性的不同理解而建立了不同的概率检索模型,而且由此导出不同的排序输出原则。可以说相关性原理及排序原理是概率检索模型的理论核心。 向量模型 向量空间模型(Vector Space Model,VSM)在上世纪70年代由信息检索领域奠基人Salton教授提出来,并成功地应用于著名的SMART文本检索系统。把对文本内容的处理简化为向量空间中的向量运算,它以空间上的相似度表达语义的相似度,直观易懂。当文档被表示为文档空间的向量,就可以通过计算向量之间的相似性来度量文档间的相似性

Elasticsearch - 简介

守給你的承諾、 提交于 2019-11-28 01:37:09
Elasticsearch 是一个分布式、可扩展、开源的全文搜索与数据分析引擎。它可以存储、搜索、分析 PB 级别的近实时数据。Elasticsearch 使用 Lucene 作为其核心来实现所有的索引和搜索功能,通过简单的Restful API 隐藏 Lucene 的复杂性,从而让全文搜索变得简单。 功能 Elasticsearch 主要有以下几个功能: 1 结构化搜索 结构化搜索是指有关探询那些具有内在结构数据的过程。比如日期、时间和数字都是结构化的:它们有精确的格式,我们可以对这些格式进行逻辑操作。比较常见的操作包括比较数字或时间的范围,或判定两个值的大小。 文本也可以是结构化的。如彩色笔可以有离散的颜色集合: 红(red) 、 绿(green) 、 蓝(blue) 。 在结构化查询中,我们得到的结果总是非是即否,要么存于集合之中,要么存在集合之外。 2 全文搜索 全文搜索就是对一篇文章进行索引,然后根据关键字搜索,类似于 mysql 里的 like 语句。 3 聚合 通过结构化搜索和全文搜索,如果我们有一个查询并且希望找到匹配这个查询的文档集,就好比在大海捞针。而通过聚合,我们会得到一个数据的概览。我们需要的是分析和总结全套的数据而不是寻找单个文档: 在大海里有多少针? 针的平均长度是多少? 按照针的制造商来划分,针的长度中位值是多少? 每月加入到海中的针有多少?