简易搜索引擎的实现与优化
1. 背景与目标
在 1995 年,企业刚开始采用 Web 为客户提供信息。当时有许多描述常见支持问题解决方案的短文档,希望将它们放到基于 Web 的知识库应用中。随着文档数量的增加,就需要具备搜索功能,因为客户不想浏览数百篇文章来寻找答案。理想的搜索方式是让客户输入任意一组单词,然后显示包含这些单词的文章,并且文章与搜索词匹配度越高,权重越高,同时还需匹配单词的不同形式。如今,在线文本搜索已很常见,但使用 SQL 进行关键字搜索,同时保证速度和准确性,却颇具难度。
SQL 的一个基本原则是列中的值是原子性的,即比较值时总是比较整个值,在 SQL 中比较子字符串效率低或不准确。但我们需要一种方法来比较短字符串和长字符串,当短字符串出现在长字符串的任何位置时都能找到匹配项。
2. 反模式:模式匹配谓词
SQL 提供了用于比较字符串的模式匹配谓词,这是大多数程序员在搜索关键字时首先想到的解决方案。其中最广泛支持的是 LIKE 谓词。
- LIKE 谓词 :支持通配符
%,它可以匹配零个或多个字符。在关键字前后使用通配符可以匹配包含该单词的任何字符串。例如:
SELECT * FROM Bugs WHERE description LIKE '%crash%';
- 正则表达式 :许多数据库品牌也支持正则表达式,但语法不标准。例如,在 MySQL 中可以使用正则表达式谓词: <
超级会员免费看
订阅专栏 解锁全文
624

被折叠的 条评论
为什么被折叠?



