gpt4 book ai didi

elasticsearch - 泰坦索引与 Elasticsearch 。字符串匹配问题

转载 作者:行者123 更新时间:2023-12-02 22:39:53 26 4
gpt4 key购买 nike

我在让索引与Titan一起工​​作时遇到了一些麻烦。我将索引配置如下:

TitanGraph graph = TitanFactory.open("conf/titan-cassandra-es.properties");
TitanManagement management = graph.openManagement();
String indexKey = "byItemIdentifier";
String propertyKey = "ITEM_IDENTIFIER";
TitanIndex index = management.getGraphIndex(indexKey);
PropertyKey key = management.makePropertyKey(propertyKey).dataType(String.class).make();
management.buildIndex(indexKey, Vertex.class).addKey(key, Mapping.STRING.asParameter()).buildMixedIndex("search");
management.commit();

现在的问题是:
Vertex vertex = graph.addVertex();
vertex.property(propertyKey, "www.foo.com/bar");
graph.commit();

然后,我尝试以下操作:
graph.traversal().V().has(propertyKey, "foo").hasNext(); //(1)
graph.traversal().V().has(propertyKey, "bar").hasNext(); //(2)
graph.traversal().V().has(propertyKey, "www.foo.com/bar").hasNext(); //(3)

(1)= false (2)= false (3)= false 。这是怎么回事?当然 (3)应该返回 true吗?我配置错误了吗?

最佳答案

首先,在创建索引之后,您应该等待它从安装到注册。此方法将帮助:

// Block until the SchemaStatus transitions from INSTALLED to REGISTERED
ManagementSystem.awaitGraphIndexStatus(graph, vertices_index).status(SchemaStatus.REGISTERED).call();

这将阻塞您的代码,直到索引后端创建它为止。

其次,如果图形中已经有一些数据,则必须重新索引属性,以便索引后端(Elasticsearch等)可以知道它。使用此Java方法:
public static void reindexGraph(TitanGraph graph, String myIndex) throws InterruptedException {
TitanManagement management = graph.openManagement();
TitanGraphIndex index = management.getGraphIndex(myIndex);
management.updateIndex(index, SchemaAction.REINDEX);
management.commit();

// Enable the index
ManagementSystem.awaitGraphIndexStatus(graph, myIndex).status(SchemaStatus.ENABLED).call();
graph.tx().commit();
}

关于elasticsearch - 泰坦索引与 Elasticsearch 。字符串匹配问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34722323/

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