Titan Warn: запрос требует итерации по всем вершинам [(name <> null)]
Я использовал ниже код
mgmt = g.getManagementSystem()
PropertyKey name = mgmt.makePropertyKey("name").dataType(String.class).make();
mgmt.buildIndex("name",Vertex.class).addKey(name).unique().buildCompositeIndex();
при получении данных из графика я получаю это предупреждение,
TransactionalGraph tx = g.newTransaction();
Iterator vertex=tx.query().has("name").vertices.iterator();
Весь граф перебирается для получения вершин вместо индексированных вершин. Пожалуйста, предложите изменения.
1 ответ
Вот ссылка на документацию по индексированию Titan 1.0, но ее описание для составных индексов применимо и к 0.5.2.
Составные индексы очень быстрые и эффективные, но ограничиваются поиском на равенство для определенной, предварительно определенной комбинации ключей свойств.
Составные индексы предназначены для получения точного соответствия ключ-значение. Ваш запрос должен содержать значение свойства, которое вы ищете, чтобы использовать индекс.
tx.query().has("name", "userRaj").vertices.iterator()
Как у вас это закодировано в вашем вопросе, он должен сканировать все вершины, которые имеют свойство name
потому что он не пытается сопоставить какое-либо конкретное значение (т.е. null
).
WARN com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx - Query requires iterating over all vertices [(name <> null)]. For better performance, use indexes
Если вы делаете новую разработку для Titan, я бы порекомендовал вам перейти на 1.0, поскольку в потоке 0.5.x больше не будет релизов.