1

我正在寻找使用 JavaScript 的基本搜索功能。

场景:用户输入一个或多个单词,然后点击一个按钮。JavaScript 在字符串数组中查找可能与输入的搜索语句相关的项目。

我现在知道的唯一函数是“string.search”,它返回您正在搜索的字符串的位置。这很好,但并非适用于所有情况。以下是搜索功能应涵盖的几个示例

假设我的数组中有以下字符串:“这是美好的一天”。在针对我的搜索功能进行测试时,以下搜索词应返回 true。

  • 搜索词 1:这是美好的一天
  • 搜索词 2:这一天
  • 搜索词 3:这很好
  • 搜索词 4:good dy -用户打错了-

所以没有什么特别或具体的。只是一个基本的搜索功能,可以预测(在低级别,并且与语言无关)搜索词是否与测试数组中的字符串相关。

4

3 回答 3

2

最后一个是“day”的错字吗?

如果没有,您可以使用 split() 函数简单地拆分搜索语句以及原始字符串。

然后,您将遍历搜索词,并确保它们出现在源字符串中。一旦你没有找到这个词,你就停止搜索。

这是假设所有搜索词都应该是与,而不是或。

这有帮助吗?

于 2012-06-16T23:17:54.110 回答
1

这并不像人们想象的那么简单。我们正在谈论模糊匹配和 Levenshtein 距离/算法。

请参阅过去的问题: 获取最接近的字符串匹配

于 2012-06-16T23:27:39.463 回答
1

我猜您正在寻找的是基于模式匹配的实时搜索,类似于类有限状态自动机 (FSA) 搜索:

此链接显示了一个示例,该示例允许您不区分大小写地进行搜索:

示例:数组包含“这是美好的一天”

搜索以下任何(或全部)是有效的:

  • 这一天
  • Thagd 今天是好日子_
  • 好的 dy - 故意的错字 -

等等

可以在此处找到区分大小写(尽管不是基于 FSA 的完美版本)的版本。还有John Resig的版本,但我没有指向他的演示的链接,但值得一看 - 这是一个 javascript/jquery 端口我提到的第一个链接。

希望这可以帮助!

于 2012-06-17T04:15:38.880 回答