Javascript 什么算法可以执行字符串模式搜索?

Javascript 什么算法可以执行字符串模式搜索?,javascript,full-text-search,Javascript,Full Text Search,在前端有一个由字符串组成的游戏标题列表: id、游戏名称、日期、价格 搜索应接受多个关键字,例如,用户可能键入:1998 Streetfighter 2或Streetfighter 1998当前我创建了一个由空格分隔的数组,该数组创建了3个关键字:[1998,Streetfighter,2],然后我通过游戏标题集筛选匹配项。不幸的是,它还返回了任何包含“2”的标题,因为没有模式识别来识别“街霸2”是否属于同一个标题。是否有一个简单的算法来提供模式搜索 const allGames = [ "St

在前端有一个由字符串组成的游戏标题列表:

id、游戏名称、日期、价格 搜索应接受多个关键字,例如,用户可能键入:
1998 Streetfighter 2
Streetfighter 1998
当前我创建了一个由空格分隔的数组,该数组创建了3个关键字:
[1998,Streetfighter,2]
,然后我通过游戏标题集筛选匹配项。不幸的是,它还返回了任何包含“2”的标题,因为没有模式识别来识别“街霸2”是否属于同一个标题。是否有一个简单的算法来提供模式搜索

const allGames = [
"Streetfighter 1, 1992, 20",
"Streetfighter 2, 1998, 20",
"pokemon, 2016, 20",
"Diablo 3, 2015, 40",
"Super mario, 1995, 20",
"The Witcher, 2012, 20",
]

您的搜索查询看起来足够高级,足以证明使用搜索引擎是正确的。只是不要自己创造一个(这比你想象的要难)

在这个答案中,我将使用

这里有一个2分钟的速成班:

  • 将数据转换为文档。(我已经转换了您的初始
    allGames
    array。)

  • 然后创建一个搜索索引,您可以在其中:

  • 指定文档的哪个属性具有唯一标识符。(在我们的案例中,
    标题
  • 定义应为哪些属性编制索引。(在我们的案例中,他们都是。)
  • 为每个属性定义一个提升分数。(即标题中的匹配比价格中的匹配具有更高的相关性得分。)
  • 将所有文档添加到搜索索引中

  • 搜索!;)



  • 请注意,Super Mario是在1985年发布的,而不是1995年发布的
    ,因为没有识别“Streetfighter 2”属于一起的模式识别那么你是说你只想匹配整个字符串,而不是它的一部分吗?使用对象数组,这样你就可以遍历特定的键,匹配或筛选。类似于const allGames=[{name:“Streetfighter 2”,releaseDate:“20-12-1992”}]对于发布日期,我建议使用date对象,这样,如果您有数千个游戏,您可以使用唯一的发布日期或名称筛选一个。非常感谢。我仍然不知道如何使用lunar for react js创建索引。你知道吗?