gpt4 book ai didi

node.js - mongodb近似字符串匹配

转载 作者:IT老高 更新时间:2023-10-28 13:06:05 25 4
gpt4 key购买 nike

我正在尝试使用 mongo db 为我的食谱网站实现搜索引擎。我正在尝试在预先输入的小部件框中向用户显示搜索建议。

我什至试图支持拼写错误的查询(levenshtein distance)。

例如:每当用户输入“pza”时,预输入应显示“pizza”作为建议之一。

如何使用 mongodb 实现这样的功能?

请注意,搜索应该是即时的,因为搜索结果将由预先输入的小部件获取。我将运行搜索查询的集合最多有 100 万个条目。

我想过实现 levenshtein 距离算法,但这会降低性能,因为收集量很大。

我在 mongo 2.6 中阅读的 FTS(全文搜索)现在相当稳定,但我的要求是近似匹配,而不是 FTS。 FTS 不会为“pizza”返回“pza”。

请推荐我有效的方法。

我正在使用 node js mongodb 原生驱动。

最佳答案

text search MongoDB 中的功能(截至 2.6)没有任何用于模糊/部分字符串匹配的内置功能。正如您所指出的,该用例目前侧重于使用基本 bool 运算符和单词/短语匹配的语言和词干支持。

根据您的要求以及您希望如何限定“高效”(速度、存储、开发时间、所需的基础设施等),有几种可能的模糊匹配方法可供考虑:

  • 使用一些现成的声音相似性和相似性算法在您的应用程序逻辑中实现对模糊/部分匹配的支持。这种方法的好处包括无需添加任何额外的基础架构,并且能够根据您的要求密切调整匹配。

    有关更详细的示例,请参阅:Efficient Techniques for Fuzzy and Partial matching in MongoDB .

  • 与提供更高级搜索功能的外部搜索工具集成。这会给您的部署增加一些复杂性,并且可能只是为了预先输入而过度使用,但您可能会发现您希望在应用程序的其他地方合并的其他搜索功能(例如“like this”、单词邻近度、分面搜索……)。

    例如参见:How to Perform Fuzzy-Matching with Mongo Connector and Elastic Search .注意:ElasticSearch 的 fuzzy query基于 Levenshtein 距离。

  • 使用自动完成库,如 Twitter 的开源 typeahead.js ,其中包括建议引擎和查询/缓存 API。 Typeahead 实际上是对任何其他后端方法及其(可选)建议引擎 Bloodhound 的补充。支持预取以及在本地存储中缓存数据。

关于node.js - mongodb近似字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27977575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com