【问题标题】:Node.js and faceted searchNode.js 和分面搜索
【发布时间】:2012-03-20 01:12:45
【问题描述】:

您在 Node.js 中进行分面搜索的秘诀是什么?

在我之前的基于 Drupal 的站点中,所有数据都存储在 Mysql 数据库中。在 cron 调用期间,所有新的/修改的/删除的节点都与 Solr 同步,它以快速的方式提供了很好的多面搜索。

如何在 Node.js 中做同样的事情?“相同”是指良好且快速的分面搜索。

最初我在考虑使用 Elasticsearch 手动同步 MongoDB。 就我个人而言,我更愿意避免使用 Sphinx(这不是一个明确的决定)。

【问题讨论】:

    标签: node.js express faceted-search


    【解决方案1】:

    您可以使用in-memory-faceted-search npm 包扫描对象数组并生成包含所有可能级别和组合的分面搜索索引。

    例子:

    const data = require("./sample.json")
    const facetedSearch = require("in-memory-faceted-search")
     
    const facets = [
      { name: "Colors", field: "color" },
      { name: "Sizes", field: "size" },
      { name: "Status", field: "active", map: (item) => (item.active ? "Active" : "Disabled") },
      { name: "Ages", field: "age", map: (item) => (item.age > 25 ? "Over 25" : "Under 25") }
    ]
     
    const tree = facetedSearch({ data, facets })
    console.log(JSON.stringify(tree, null, 4))
    

    输出:

    {
        "count": 100,
        "Colors": {
            "red": {
                "count": 27
            },
            "blue": {
                "count": 25
            },
            "green": {
                "count": 23
            },
            "brown": {
                "count": 25
            }
        },
        "Sizes": {
            "big": {
                "count": 29
            },
            "small": {
                "count": 34
            },
            "medium": {
                "count": 37
            }
        },
        "Status": {
            "Disabled": {
                "count": 56
            },
            "Active": {
                "count": 44
            }
        },
        "Ages": {
            "Over 25": {
                "count": 72
            },
            "Under 25": {
                "count": 28
            }
        }
    }
    

    查看 README 文件以获取更多示例和更深层次

    【讨论】:

      【解决方案2】:

      Node.js 在这里完全无关紧要。您需要的是可以进行分面搜索的数据存储和/或索引技术。用 Node.js 连接任意数量的这些只是管道。如果对您有用,为什么不直接使用 MySQL?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多