blog-post

精通 Manticore 搜索的模糊搜索

模糊搜索代表了一系列技术,使得搜索查询与内容之间能够智能匹配。它的核心在于,即使搜索词没有完美匹配,也能找到相关结果。尽管最常用于处理拼写错误和打字错误,但这一技术远远超出了简单的错误校正 - 它可以解释模糊查询,理解非正式语言,处理部分单词,并识别可能不具有精确术语的相关概念。

本文中我们将探讨的模糊匹配技术使 Manticore 搜索能够实施智能匹配策略,确保全面的结果检索。在这种情况下,相关性变成了一种细腻的艺术,而不是僵化的科学。

理解搜索相关性

搜索的基础在于精确的文本匹配,其中查询逐字符与索引内容匹配。例如,搜索“laptop”将仅返回包含该确切词的记录,而不会返回与之相关的词如“notebook”或“computer”。

精确匹配在许多方面表现良好。对于结构良好的数据,搜索“laptop”将显示所有包含该术语的相关记录,无论是在标题、描述还是类别中。通过增强的数据建模,搜索“laptop”甚至可以返回相关项目,如笔记本电脑配件或计算机服务。

然而,当记录中没有确切的术语时,尽管内容是相关的,这时候会发生什么呢?同义词可以在这里提供帮助。但是如果有人搜索“notebook”却输入了“notebok”呢?没有模糊匹配,搜索将不会返回任何结果。

模糊匹配通过使体验更加自然和宽容来增强搜索相关性。当有效实施时,它无缝地纳入了否则会被忽视的相关项目。就像拼图一样,模糊搜索收集相似的碎片,帮助用户找到确切所需的东西。此外,由于用户常常在搜索过程中细化他们的需求,模糊匹配基于相似性提供选项,很像在选择完美餐点之前品尝菜肴。

现代搜索引擎如 Manticore 搜索、Elasticsearch 和 Algolia 提供了复杂的模糊匹配能力,各自有其独特的方法。让我们详细探讨 Manticore 的实施。

理解模糊搜索

什么是模糊搜索?

模糊搜索允许匹配并不完全相同的单词。它处理各种类型的输入变体,从简单的拼写错误到复杂的错误拼写。这项技术适应了匆忙打字、移动用户的输入挑战以及不同语言拼写的复杂性。它特别适合匹配用户生成的内容,这类内容往往在拼写和术语上存在变化。该技术还可以结合语音匹配能力。

替代术语包括近似字符串匹配或模糊字符串匹配。

示例:

  • 输入"helo",查找包含"hello"的记录
  • 输入"help",查找包含help和hello的记录

请参见更多示例及其在 Manticore 中的实现。

什么是模糊匹配?

模糊匹配将概念扩展到基于各种相似性找到信息。我们将专注于基于语言的相似性,包括同义词、语法变体(复数、动词形式等)、基于字典的方法以及其他语言学或自然语言处理技术。我们还将讨论常见的搜索引擎功能,如部分单词匹配、短语匹配和过滤能力。

示例:

  • 输入"pants",查找pants、trousers、slacks(同义词)
  • 输入"be",查找Beatles、bees(前缀搜索)

请参见更多示例及其在 Manticore 中的实现。

模糊逻辑的其他应用

模糊逻辑帮助根据共享特征对项目进行分类。例如,智能手机、平板电脑和笔记本电脑共享便携式计算设备的特征,但由于其触摸界面和移动操作系统,智能手机和平板电脑更为相关。

模糊逻辑基于相对相似性而不是二进制真/假条件(物体基于“便携”匹配,而不是具有相同的重量)建立关系。

在 Manticore 中利用勒温斯坦距离实现模糊搜索

错误容忍允许用户在打字时犯错并仍然找到相关结果。Manticore 通过勒温斯坦距离算法实现这一点。

什么构成拼写错误?

  • 缺少字符:“laptp” → “laptop”
  • 多余字符:“laptopp” → “laptop”
  • 字符颠倒:“lpatop” → “laptop”
  • 错误字符:“laptip” → “laptop”

勒温斯坦距离算法

Manticore 的错误容忍使用基于距离的匹配,实施勒温斯坦距离算法。距离测量输入单词与索引中的确切匹配之间的差异。具体来说,它表示将一个词转换为另一个词所需的最小操作次数(添加、删除、替换或交换字符)。完美匹配的距离为0。当存在精确匹配或距离较小(一个或两个字符的差异)时,该记录将包含在结果中。

例如,如果引擎接收到“laptp”,它可以匹配“laptop”(距离 = 1 / 缺少一个字符),或“laptps”(距离 = 2 / 需要两个操作)。

安装Manticore Search

安装Manticore Search