private Parameter getStringMapping() { if (indexFeatures.supportsStringMapping(Mapping.STRING)) return Mapping.STRING.asParameter(); else if (indexFeatures.supportsStringMapping(Mapping.TEXTSTRING)) return Mapping.TEXTSTRING.asParameter(); throw new AssertionError("String mapping not supported"); }
private Parameter getTextMapping() { if (indexFeatures.supportsStringMapping(Mapping.TEXT)) return Mapping.TEXT.asParameter(); else if (indexFeatures.supportsStringMapping(Mapping.TEXTSTRING)) return Mapping.TEXTSTRING.asParameter(); throw new AssertionError("Text mapping not supported"); }
public static Map<String,KeyInformation> getMapping(final IndexFeatures indexFeatures, final String englishAnalyzerName, final String keywordAnalyzerName) { Preconditions.checkArgument(indexFeatures.supportsStringMapping(Mapping.TEXTSTRING) || (indexFeatures.supportsStringMapping(Mapping.TEXT) && indexFeatures.supportsStringMapping(Mapping.STRING)), "Index must support string and text mapping"); final Parameter<?> textParameter = indexFeatures.supportsStringMapping(Mapping.TEXT) ? Mapping.TEXT.asParameter() : Mapping.TEXTSTRING.asParameter(); final Parameter<?> stringParameter = indexFeatures.supportsStringMapping(Mapping.STRING) ? Mapping.STRING.asParameter() : Mapping.TEXTSTRING.asParameter(); return new HashMap<String,KeyInformation>() {{ put(TEXT,new StandardKeyInformation(String.class, Cardinality.SINGLE,textParameter)); put(TIME,new StandardKeyInformation(Long.class, Cardinality.SINGLE)); put(WEIGHT,new StandardKeyInformation(Double.class, Cardinality.SINGLE, Mapping.DEFAULT.asParameter())); put(LOCATION,new StandardKeyInformation(Geoshape.class, Cardinality.SINGLE)); put(BOUNDARY,new StandardKeyInformation(Geoshape.class, Cardinality.SINGLE, Mapping.PREFIX_TREE.asParameter())); put(NAME,new StandardKeyInformation(String.class, Cardinality.SINGLE,stringParameter)); if(indexFeatures.supportsCardinality(Cardinality.LIST)) { put(PHONE_LIST, new StandardKeyInformation(String.class, Cardinality.LIST, stringParameter)); } if(indexFeatures.supportsCardinality(Cardinality.SET)) { put(PHONE_SET, new StandardKeyInformation(String.class, Cardinality.SET, stringParameter)); } put(DATE,new StandardKeyInformation(Instant.class, Cardinality.SINGLE)); put(STRING, new StandardKeyInformation(String.class, Cardinality.SINGLE, stringParameter, new Parameter<>(ParameterType.STRING_ANALYZER.getName(), englishAnalyzerName))); put(ANALYZED, new StandardKeyInformation(String.class, Cardinality.SINGLE, textParameter, new Parameter<>(ParameterType.TEXT_ANALYZER.getName(), englishAnalyzerName))); if(indexFeatures.supportsStringMapping(Mapping.TEXTSTRING)){ put(FULL_TEXT, new StandardKeyInformation(String.class, Cardinality.SINGLE, Mapping.TEXTSTRING.asParameter(), new Parameter<>(ParameterType.STRING_ANALYZER.getName(), englishAnalyzerName), new Parameter<>(ParameterType.TEXT_ANALYZER.getName(), englishAnalyzerName))); } put(KEYWORD, new StandardKeyInformation(String.class, Cardinality.SINGLE, textParameter, new Parameter<>(ParameterType.TEXT_ANALYZER.getName(), keywordAnalyzerName))); }}; }
if (index.supports(new StandardKeyInformation(String.class, Cardinality.SINGLE, Mapping.STRING.asParameter()), Text.REGEX)) { assertEquals(1, tx.queryStream(new IndexQuery(store, PredicateCondition.of(NAME, Text.REGEX, "Tomo[r]+ow is.*world"))).count()); assertEquals(0, tx.queryStream(new IndexQuery(store, PredicateCondition.of(NAME, Text.REGEX, "Tomorrow"))).count()); assertEquals(ImmutableSet.of("doc1","doc2"), ImmutableSet.copyOf(result)); if (index.supports(new StandardKeyInformation(Geoshape.class, Cardinality.SINGLE, Mapping.PREFIX_TREE.asParameter()), Geo.DISJOINT)) { result = tx.queryStream(new IndexQuery(store, PredicateCondition.of(BOUNDARY, Geo.DISJOINT, Geoshape.box(46.5, -0.5, 50.5, 10.5)))).collect(Collectors.toList()); assertEquals(0,result.size()); if (index.supports(new StandardKeyInformation(String.class, Cardinality.LIST, Mapping.STRING.asParameter()), Cmp.EQUAL)) { assertEquals("doc1", tx.queryStream(new IndexQuery(store, PredicateCondition.of(PHONE_LIST, Cmp.EQUAL, "1"))).findFirst().get()); assertEquals("doc1", tx.queryStream(new IndexQuery(store, PredicateCondition.of(PHONE_LIST, Cmp.EQUAL, "2"))).findFirst().get());
final JanusGraphIndex mixed = mgmt.buildIndex("mixed", Vertex.class).addKey(name, Mapping.TEXTSTRING.asParameter()).buildMixedIndex(INDEX); mixed.name(); finishSchema();
@Test public void testSetUpdate() { if (!indexFeatures.supportsCardinality(Cardinality.SET)) { return; } final PropertyKey name = makeKey("name", String.class); final PropertyKey alias = mgmt.makePropertyKey("alias").dataType(String.class).cardinality(Cardinality.SET).make(); mgmt.buildIndex("namev", Vertex.class).addKey(name).addKey(alias, indexFeatures.supportsStringMapping(Mapping.TEXTSTRING) ?Mapping.TEXTSTRING.asParameter(): Mapping.DEFAULT.asParameter()).buildMixedIndex(INDEX); finishSchema(); JanusGraphVertex v = tx.addVertex("name", "Marko Rodriguez"); assertCount(1, tx.query().has("name", Text.CONTAINS, "marko").vertices()); clopen(); assertCount(1, tx.query().has("name", Text.CONTAINS, "marko").vertices()); v = getOnlyVertex(tx.query().has("name", Text.CONTAINS, "marko")); v.property(VertexProperty.Cardinality.set, "alias", "Marko"); assertCount(1, tx.query().has("alias", Text.CONTAINS, "Marko").vertices()); clopen(); assertCount(1, tx.query().has("alias", Text.CONTAINS, "Marko").vertices()); v = getOnlyVertex(tx.query().has("name", Text.CONTAINS, "marko")); v.property(VertexProperty.Cardinality.set, "alias", "mRodriguez"); assertCount(1, tx.query().has("alias", Text.CONTAINS, "mRodriguez").vertices()); clopen(); assertCount(1, tx.query().has("alias", Text.CONTAINS, "Marko").vertices()); assertCount(1, tx.query().has("alias", Text.CONTAINS, "mRodriguez").vertices()); if (indexFeatures.supportsStringMapping(Mapping.TEXTSTRING)) { assertCount(1, tx.query().has("alias", Cmp.EQUAL, "Marko").vertices()); assertCount(1, tx.query().has("alias", Cmp.EQUAL, "mRodriguez").vertices()); } }
mgmt.buildIndex("namev", Vertex.class).addKey(name).addKey(alias, indexFeatures.supportsStringMapping(Mapping.TEXTSTRING) ?Mapping.TEXTSTRING.asParameter(): Mapping.DEFAULT.asParameter()).buildMixedIndex(INDEX); finishSchema(); JanusGraphVertex v = tx.addVertex("name", "Marko Rodriguez");
mgmt.buildIndex("blablub", Vertex.class).addKey(text, Mapping.TEXT.asParameter()).buildCompositeIndex(); fail(); } catch (IllegalArgumentException ignored) { mgmt.buildIndex("blablub", Vertex.class).addKey(text, Mapping.TEXT.asParameter()).buildCompositeIndex(); fail(); } catch (IllegalArgumentException ignored) {
/** * Create the statusUpdate schema - vertex label, property and full-text index. */ private void createStatusUpdateSchema(){ LOGGER.info("Create {} schema", STATUS_UPDATE); VertexLabel statusUpdate = mgt.makeVertexLabel(STATUS_UPDATE).make(); PropertyKey content = mgt.makePropertyKey(CONTENT).dataType(String.class).make(); mgt.buildIndex(indexName(STATUS_UPDATE, CONTENT), Vertex.class). addKey(content, Mapping.TEXTSTRING.asParameter()). indexOnly(statusUpdate). buildMixedIndex(BACKING_INDEX); }
/** * Create the user schema - vertex label, property and index. */ private void createUserSchema(){ LOGGER.info("Create {} schema", USER); VertexLabel user = mgt.makeVertexLabel(USER).make(); PropertyKey userName = mgt.makePropertyKey(USER_NAME).dataType(String.class).make(); mgt.buildIndex(indexName(USER, USER_NAME), Vertex.class). addKey(userName, Mapping.STRING.asParameter()). indexOnly(user). buildMixedIndex(BACKING_INDEX); }
janusGraphManagement.buildIndex(indexData.getIndexName(), Vertex.class).addKey(propKey, Mapping.STRING.asParameter()) .buildMixedIndex("search");
janusGraphManagement.buildIndex(indexData.getIndexName(), Vertex.class).addKey(propKey, Mapping.STRING.asParameter()) .buildMixedIndex("search");