sclass TripleIndex extends VirtualNodeIndex { new SyncListMultiMap index; Map websByID = synchroHashMap(); int size; int numWebs() { ret size; } L get(S query) { new L l; for (Web web : websFromTriples(index.get(query))) for (WebNode node : web_nodesAndRelations(web)) if (web_hasText(node, query)) l.add(node); ret l; } Web getWeb(GlobalID id) { ret webFromTriple(websByID.get(id)); } void addWeb(Web web) { TripleWeb w = ai_webToTripleWeb(web); for (S s : lithashset(w.a, w.b, w.c)) { // only once index.put(s, w); ++size; } websByID.put(w.globalID, w); } }