JanusGraph->Index Backends -> Search Predicates and Data Types

  • Compare Predicate
  • eq (equal)
    neq (not equal)
    gt (greater than)
    gte (greater than or equal)
    lt (less than)
    lte (less than or equal)
    
  • Text Predicate
     Text search predicates which match against the individual words inside a text string after it has been tokenized. These predicates are not case sensitive.
    
     		textContains: is true if (at least) one word inside the text string matches the query string
     		textContainsPrefix: is true if (at least) one word inside the text string begins with the query string
     		textContainsRegex: is true if (at least) one word inside the text string matches the given regular expression
    
     String search predicates which match against the entire string value
     	    textPrefix: if the string value starts with the given query string
     	    textRegex: if the string value matches the given regular expression in its entirety
    
  • Geo Predicate
  • Query Examples g.V().has("name", "hercules") // 2) Find all vertices with an age greater than 50 g.V().has("age", gt(50)) // or find all vertices between 1000 (inclusive) and 5000 (exclusive) years of age and order by increasing age g.V().has("age", inside(1000, 5000)).order().by("age", incr) // which returns the same result set as the following query but in reverse order g.V().has("age", inside(1000, 5000)).order().by("age", decr) // 3) Find all edges where the place is at most 50 kilometers from the given latitude-longitude pair g.E().has("place", geoWithin(Geoshape.circle(37.97, 23.72, 50))) // 4) Find all edges where reason contains the word "loves" g.E().has("reason", textContains("loves")) // or all edges which contain two words (need to chunk into individual words) g.E().has("reason", textContains("loves")).has("reason", textContains("breezes")) // or all edges which contain words that start with "lov" g.E().has("reason", textContainsPrefix("lov")) // or all edges which contain words that match the regular expression "br[ez]*s" in their entirety g.E().has("reason", textContainsRegex("br[ez]*s")) // 5) Find all vertices older than a thousand years and named "saturn" g.V().has("age", gt(1000)).has("name", "saturn")
  • Data Type Support
  • Byte
    Short
    Integer
    Long
    Float
    Double
    Decimal
    Precision
    String
    Geoshape
    Date
    Instant
    
  • Geoshape Data Type
  • 	 //lat, lng
    Geoshape.point(37.97, 23.72)
    //lat, lng, radius in km
    Geoshape.circle(37.97, 23.72, 50)
    //SW lat, SW lng, NE lat, NE lng
    Geoshape.box(37.97, 23.72, 38.97, 24.72)
    
    
    //string
    "37.97, 23.72"
    //list
    [37.97, 23.72]
    //GeoJSON feature
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [125.6, 10.1]
      },
      "properties": {
        "name": "Dinagat Islands"
      }
    }
    //GeoJSON geometry
    {
      "type": "Point",
      "coordinates": [125.6, 10.1]
    }
    
  • Collections
  • mgmt = graph.openManagement()
    nameProperty = mgmt.makePropertyKey("names").dataType(String.class).cardinality(Cardinality.SET).make()
    mgmt.buildIndex("search", Vertex.class).addKey(nameProperty, Mapping.STRING.asParameter()).buildMixedIndex("search")
    mgmt.commit()
    //Insert a vertex
    person = graph.addVertex()
    person.property("names", "Robert")
    person.property("names", "Bob")
    graph.tx().commit()
    //Now query it
    g.V().has("names", "Bob").count().next() //1
    g.V().has("names", "Robert").count().next() //1
    

    좋은 웹페이지 즐겨찾기