如何搜索和过滤大型数据集(JSON / AngularJS)

时间:2015-02-20 16:32:35

标签: javascript json angularjs ionic-framework

我需要有关如何处理项目的帮助,并希望从一开始就得到正确的建议,而不是走到路上,不得不进行大转弯。

我正在制作的应用程序(使用Ionic /(AngularJS)和Parse)将成为练习的搜索引擎。目前的运动数据集超过4000,并将继续增长。为了让用户找到他们想要的练习,将会有两种搜索方法:

  1. 使用Angular exerciseTitleng-filter进行文字搜索。目前这非常有效。

  2. 用户选择过滤器,就像在亚马逊上选择电子产品>相机>配件>例如。当他们检查过滤器时,它们会被添加到搜索中,并缩小搜索结果范围。之所以使用它是因为许多练习都有不同的名称,因此许多标签/过滤器可以大大缩小范围,用户可以在不必知道确切exerciseTitle的情况下找到事物。

  3. 我目前在应用程序中工作,通过将过滤器名称推送到数组,然后使用该数组单词过滤数据。

    我正在编辑我们的数据集,并希望确保它可以被搜索到'和“可过滤的'尽可能。一个建议是每次练习tags。例如,练习'深蹲'可能有以下分类和标签。

    身体部位 "腿","下半身"," Quadriceps"

    练习类型 "力量","站立","加权"

    设备 "哑铃"

    典型的练习在JSON中的结构如下。

    {[
        "exerciseTitle":"Walking Lunge with Resistance Band Above Head",
        "exId" : "23jhgb56ha",
        "originalId" : "12",
        "masterImage" : "31",
        "images" : ["31","32","33"],
        "description" : "Holding the resistance band above your head take a step forward from the standing position and drop the knee of the rear leg down to the floor",
        "primaryMuscleGroup" : "Quadriceps",
        "secondaryMuscleGroup" : "Glutes",
        "equipment" : "Resistance Band",
        "functionalMovement" : "Lunge",
        "relatedExercises" : ["23","25"],
    ]}
    

    问题1。 将标签添加到数据集时,我应该将它们分成分类和标签,还是只需添加与该练习相关的标签数组。

    问题2。 如何仅使用AngularJS中某个分类中的标记进行过滤。

    问题3。 有关如何处理此项目的任何建议,以确保搜索100%完美,用户甚至可以找到系统中最复杂的练习。

    非常感谢

2 个答案:

答案 0 :(得分:1)

我在我的blog示例中了解自定义过滤器如何使用样本小提琴在多个属性上工作。

http://andreaskarz.blogspot.ch/2014/03/mehrere-filter-auf-ng-repeat-anwenden.html

答案 1 :(得分:1)

1,2,3我会在JSON中将标签添加为单独的字段,因此每次都不需要通过内部数组(它会稍快一些)

我还会考虑在客户端上搜索数据库。如果您的数据集太大,迟早会遇到性能问题。此搜索也可以生成分页对象,因此您在站点上的结果不会超过100。请记住,90%的人正在寻找前10个结果。