package esl.cuenet.ranking.network; import esl.cuenet.ranking.TextIndex; import esl.cuenet.ranking.URINode; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.index.Index; import org.neo4j.graphdb.index.IndexHits; public class NeoLuceneIndex implements TextIndex { private final Index<Node> nodeIndex; public NeoLuceneIndex(Index<Node> nodeIndex) { this.nodeIndex = nodeIndex; } @Override public URINode lookup(String key, Object value) { IndexHits<Node> hits = nodeIndex.get(key, value); if (hits.size() == 0) throw new RuntimeException("No nodes corresponding to key: " + key + " " + value); return NeoCache.getInstance().lookupNode(hits.getSingle()); } @Override public void put(URINode node, String key, Object value) { if (!(node instanceof NeoURINode)) throw new RuntimeException("cannot index nodes which are not NeoURI Nodes"); nodeIndex.putIfAbsent( ((NeoURINode)node).node, key, value); } }