全文搜索与搜索引擎概述
本章定位:从零理解"搜索"这件事——结构化搜索 vs 全文搜索、搜索引擎发展简史、Elasticsearch 在搜索生态中的位置。
定义与作用
全文搜索(Full-Text Search)是指在大量非结构化或半结构化的文本中,快速查找与搜索词相关的文档,并按相关度排序返回。这与传统数据库的精确查询(WHERE name = '张三')有本质区别。
解决的痛点:数据库的 LIKE '%关键词%' 在大数据量下性能极差(全表扫描),且无法实现分词、相关度排序、模糊匹配和同义词扩展等高级搜索功能。
核心原理:搜索引擎工作流程
完整示例:飞翔科技的搜索需求
场景一:杨英的传统 SQL 困境
运营杨英用 MySQL 管理学生数据,搜索"广东省计算机专业"的学生时遇到问题:
-- ❌ 慢!全表扫描 10 万条
SELECT * FROM students WHERE major LIKE '%计算机%' AND province = '广东';
-- ❌ 更慢!双模糊匹配
SELECT * FROM students WHERE name LIKE '%小%' AND major LIKE '%科学%';
白歌用 Elasticsearch 让她体验毫秒级搜索:
POST /students/_search
{
"query": {
"bool": {
"must": [
{ "match": { "major": "计算机" } }
],
"filter": [
{ "term": { "province": "广东" } }
]
}
}
}
小结
全文搜索的核心是倒排索引——将"文档→词"的正向映射反转为"词→文档"。搜索引擎的工作流程:文档入库→分词→建倒排索引;搜索时→分词→查倒排索引→评分→排序。ES 在此基础上增加了分布式、高可用和多维度聚合分析能力。