全文检索的了解

文章目录

1)全文检索的原理

复制代码
结构化数据搜索快,是因为有一定的搜索算法。
那么是不是可以将非结构数据中的一部分信息提取出来,
重新组织,使其变得有一定结构,
然后对这部分有结构的数据进行搜索,从而达到搜索较快的目的。

索引:从非结构数据中提取出来。重新组织的信息,叫索引。

反向索引:通过字符串来反向映射到文件,即:通过字符串找到对应的文件。
		左边是一系列字符串,称为词典。
		每个字符串都指向包含此字符串的文档链表(倒排表)。

	优点:一次索引可以多次使用。

2)索引的建立

复制代码
1.	有一系列要建立索引的原文档。

2.	将原文档传给分词组件,处理后得到词元。
		具体操作: 
			1)将文档分为一个个单独的单词。
			2)去除标点符号。
			3)去除停词(无特别意义的单词,每一种语言的分词组件都有一个停词集合)。
			
3.	将词元传给语言处理组件,处理后得到一系列词。
		具体操作:
			1)变小写
			2)将单词缩减为词根形式。
			3)将单词转变为词根形式。
			
4. 将得到词传给索引组件,创建索引。
		具体操作:
			1)将得到的词创建一个字典。
			2)对字典按照字母顺序进行排序。
			3)合并相同的词成为文档倒排列表。
			
5.	通过索引存储将索引写入硬盘。

3)搜索过程

复制代码
1.	用户输入查询语句。
2.	对查询语句经过语法分析和语言处理后,得到一系列词。
3.	通过语法分析得到一个查询树。
4.	通过索引存储将索引读入内存。
5.	利用查询树搜索索引,得到每个词的文档链表,对文档链表进行合并、去重,得到结果文档。
6.	将搜索到的结果文档对查询的相关性进行排序。
7.	返回查询结果给用户。

注:如何计算文档和查询语句的相关性?
		1. 找出词对文档的重要性。
				这个过程称为计算词的权重过程。
				影响因素:词+文档
				算法:向量空间模型
						Term Frequency:  在本文档中出现的次数。
						Document Frequency:  文档频次,总共有多少文档包含此词。
						
		2. 判断词之间的关系,得到文档相关性。
		3. 根据相关性从大到小排序。 
相关推荐
Elastic 中国社区官方博客7 小时前
错误最多的服务运行正常:使用 ES|QL 从日志进行根因分析
大数据·运维·数据库·sql·elasticsearch·搜索引擎·全文检索
Elastic 中国社区官方博客3 天前
使用 Jev 作为 search reranker:基准测试与实现方法
大数据·运维·elasticsearch·全文检索
Elastic 中国社区官方博客4 天前
Kubernetes attributes processor v1:它对 EDOT Collector 意味着什么
java·大数据·elasticsearch·搜索引擎·贪心算法·kubernetes·全文检索
Elastic 中国社区官方博客4 天前
Elasticsearch Serverless 如何通过 hollow shards 将索引节点关闭次数降低 30%
大数据·数据库·elasticsearch·搜索引擎·serverless·全文检索
Elastic 中国社区官方博客4 天前
14 个 alerts,1 个 incident:使用 Elasticsearch 中的 ES|QL 衡量 alerting rule 噪声
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索
SelectDB技术团队5 天前
一条日志两套引擎的账:把 Elasticsearch 检索与分析合并到同一份数据的落地写法
大数据·数据库·elasticsearch·搜索引擎·全文检索·日志·apache doris
Elastic 中国社区官方博客5 天前
使用 Lucene 搜索你的 Bean —— Elasticsearch
大数据·开发语言·人工智能·elasticsearch·搜索引擎·全文检索·lucene
金士镧厦门新材5 天前
第2期|抑烟剂到底是什么?
全文检索
SelectDB技术团队5 天前
Agent Trace 数据底座建设:宽表建模、全文检索与成本聚合的配置与验证步骤
大数据·python·clickhouse·elk·elasticsearch·全文检索·复杂查询
Elastic 中国社区官方博客5 天前
使用 NVIDIA cuVS 在 Elasticsearch 中实现 GPU 加速的向量索引:在 10 分钟内处理 1.38 亿个向量
大数据·数据库·elasticsearch·搜索引擎·全文检索·安全威胁分析