如何使用jquery从客户端进行全文搜索?

时间:2017-12-23 11:15:54

标签: jquery

我想使用Jquery从客户端进行全文搜索。找到了一些解决方案,但它们都给出了完全匹配。

我想对数据执行布尔搜索。数据以树格式存在于客户端。

EG。如果我在搜索引擎上放置所需的搜索过滤器,它将显示与相关数据的完全匹配,同一搜索想要在客户端执行。

尝试 - http://www.redotheweb.com/2013/05/15/client-side-full-text-search-in-css.html 它给出完全匹配。但如果我在搜索字段中添加多个单词则会失败。寻找更好的解决方案。

有人知道如何进行这种搜索吗?或者知道任何插件,请建议最好 提前致谢。 :)

1 个答案:

答案 0 :(得分:2)

你可以使用FuseJs。当然它不是一个jquery插件,而是一个javascript库。 它在后台使用模糊搜索来找到你想要的东西。

FuseJs是一种轻量级模糊搜索,在JavaScript中,没有依赖关系。

您可以查看Demo and usage here

以下是图书馆的快速浏览。

让我们抓住这个对象数组作为我们的模型:

var list = [
     {
        title: "Old Man's War",
        author: {
          firstName: "John",
          lastName: "Scalzi"
        }
     },
     {
        title: "The Lock Artist",
        author: {
          firstName: "Steve",
          lastName: "Hamilton"
        }
     },
     {
        title: "HTML5",
        author: {
          firstName: "Remy",
          lastName: "Sharp"
        }
     }
]

允许搜索这些数组并使用键找到项目:

var options = {
  shouldSort: true,
  threshold: 0.6,
  location: 0,
  distance: 100,
  maxPatternLength: 32,
  minMatchCharLength: 1,
  keys: [
    "title",
    "author.firstName"
]
};
var fuse = new Fuse(list, options);
var result = fuse.search("The Lock Artist"); //this can be read from an input

结果将是:

[
  {
    "title": "The Lock Artist",
    "author": {
      "firstName": "Steve",
      "lastName": "Hamilton"
    }
  }
]

您可以在official website中看到很多选项。

请注意更好的结果:

为了获得更好的结果和更精确的匹配,您应该更改阈值和距离选项。

阈值:

  

匹配算法在什么时候放弃。阈值0.0需要完美匹配(字母和位置),阈值1.0将匹配任何内容。

距离:

  

确定匹配必须与模糊位置(由位置指定)的接近程度。距离模糊位置的距离字符的精确字母匹配将得分为完全不匹配。距离为0要求匹配位于指定的确切位置,距离1000要求完全匹配,使用0.8的阈值在要找到的位置的800个字符内。

例如在官方网站上搜索单词" Steve"你会得到" Jeeves"结果也是。正如我所说,我们应该改变距离和门槛。

在这种情况下,设置为:

阈值:0.2

距离:0