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 больше не будет релизов.

Другие вопросы по тегам