gpt4 book ai didi

Neo4j Facet 字段,如 Solr

转载 作者:行者123 更新时间:2023-12-01 06:38:19 33 4
gpt4 key购买 nike

我在用 PHP 构建的社区电子商务中使用 Neo4j 并使用 REST 接口(interface)。

我需要获取与亚马逊等搜索结果相关的所有类别。此功能在 Solr(Lucene 的另一种实现)等其他引擎中可用,为 Faceted Search

我该怎么办 分面搜索 在 Neo4j 中?或重新创建此功能的最佳方式(性能等级)是什么?

neo4j 的核心包中排除了与此功能相关的所有必需模块。我想知道是否有人尝试在不横向所有节点的情况下做这样的事情,获取一些属性,并对这些值进行 groupCount。如果我们有 200k 个节点,则横向需要 10 秒才能获得类别。

这是我的 Gremlin 方法。

(new Neo4jVertexSequence(
g.getRawGraph().index().forNodes('products').query(
new org.neo4j.index.lucene.QueryContext('category:?')
), g
))._().groupBy{it.category}.cap.next();

结果为 90 行,耗时 54 秒。
Books = 12002
Movies_Music_Games = 19233
Electronics_Computers = 60540
Home_Garden_Tools = 9123
Grocery_Health_Beauty = 15643
Toys_Kids_Baby = 15099
Clothing_Shoes_Jewelry = 12543
Sports_Outdoors = 10342
Automotive_Industrial = 9638
... (more rows)

当然,我不能把这个结果放在缓存中,因为这是“非输入搜索”。如果用户进行像“Iphone”这样的查询,查询看起来像
(new Neo4jVertexSequence(
g.getRawGraph().index().forNodes('products').query(
new org.neo4j.index.lucene.QueryContext('search:"iphone" AND category:?')
), g
))._().groupBy{it.category}.cap.next();

最佳答案

你的领域模型呢?你把所有东西都放在索引里了吗?通常,您会将您的类别建模为节点,并将您的产品与类别节点相关联。

(product)-[:HAS_CATEGORY]->(category)<-[:IS_CATEGORY]-(categories)

在您的查询中,您只需遍历这棵小树并从每个类别节点开始计算 :HAS_CATEGORY 类型的关系。
start categories=node(x)
match (product)-[:HAS_CATEGORY]->(category)<-[:IS_CATEGORY]-(categories)
return category.name, count(*)

关于Neo4j Facet 字段,如 Solr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13043022/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com