模糊字符串搜索,但是否有对象?

问题描述 投票:1回答:1

有很多提供模糊字符串搜索功能的库,您可以在其中提供输入字符串,并搜索“足够接近”的字符串。

例如,如果您输入单词cat,则可能会得到:

  • 猫(100%)
  • 帽子
  • rat

除了对象之外,是否有其他功能?一种算法,它接受两个对象并比较不是它们是否相似(这很简单并且已经完成),但是比较是[[相当相似]]。从0到100%的百分比之间的相似度如何,其中100%是完全匹配,而0%根本不相似,或者它可以是一个数字,例如https://en.wikipedia.org/wiki/Levenshtein_distance,其中0是完全匹配,并且数字将是“紧密度”,没有上限。例如,如果我有一个对象(javascript):

const a = { name: 'John Doe', age: 18 }

如果我将它与另一个对象进行比较:

const b = { name: 'Some random name', age: 5 }

您会得到一些不会为0的分数。我不确定您会得到什么值,这取决于您将使用哪种评分系统(0-100%或x> = 0)

但是,将a与b进行比较的结果与将其与诸如以下的完全不同的结果进行比较相比会更接近:

const c = { foo: 0 }

这里的对象几乎根本不相似。因此,这里的得分会更糟(对于0-100%,它将是一个较低的数字,对于x> = 0,它将是一个较高的数字,与b相比)。

是否有任何现有的算法或库可以实现这样的目标?特别是在javascript中?

我发现了一些可能与此相似的库,但是增加了评论:

javascript algorithm fuzzy-search
1个回答
0
投票
如果对象最终由可序列化的值组成(没有类实例或函数),一种选择是将它们字符串化,然后在这些字符串上使用相同的“模糊搜索”算法:

© www.soinside.com 2019 - 2024. All rights reserved.