【发布时间】:2015-01-16 05:01:26
【问题描述】:
我正在尝试使用 mongo db 为我的食谱网站实现搜索引擎。 我正在尝试在预先输入的小部件框中向用户显示搜索建议。
我什至试图支持拼写错误的查询(levenshtein distance)。
例如:每当用户输入“pza”时,预输入应显示“pizza”作为建议之一。
如何使用 mongodb 实现这样的功能?
请注意,搜索应该是即时的,因为搜索结果将由预先输入的小部件获取。我将运行搜索查询的集合最多有 100 万个条目。
我想过实现 levenshtein 距离算法,但这会降低性能,因为收集量很大。
我在 mongo 2.6 中阅读的 FTS(全文搜索)现在相当稳定,但我的要求是近似匹配,而不是 FTS。 FTS 不会为“pizza”返回“pza”。
请推荐我有效的方法。
我正在使用 node js mongodb 原生驱动。
【问题讨论】:
-
如果您真的想要这种结果,那么您最好实施一个已经完成 OOTB 的外部搜索引擎解决方案。 MongoDB 的文本搜索功能旨在成为“最小”案例。您可以始终将主存储库保留在 MongoDB 中,并且现有流行产品的连接器说明。
-
对于我们这些不熟悉这个概念的人来说,这只是一个方便的 Levenshtein Distance 链接:people.cs.pitt.edu/~kirk/cs1501/Pruhs/Spring2006/assignments/…