2017-07-01 57 views
6

Vertex özelliklerini Azure Cosmos Graph DB'de içeren bir aramayla aramak mümkün mü?Azure Cosmos DB Grafik Joker karakter arama

Örneğin, adında 'Jr' olan tüm kişileri bulmak isterim? within('') fonksiyonu sadece 'Jr' tam olarak eşit olan değerlere filtreler gibi

g.V().hasLabel('person').has('name',within('Jr')).values('name') 

görünüyor. Ben bir içerik arıyorum. İdeal durumda büyük harf duyarlı.

+1

Normalde Tinkerpop/gremlin ile gV() gibi bir şey varLabel ('kişi) .filter {it.getProperty (' name '). toLowerCase(). içerir (' jr ')}. değerleri (' name ') 'ancak Cosmos DB Grafiği henüz yok destek kapakları. Kapaklar mevcut olduğunda bu konuya cevap verir. –

+0

Titan kullanırken textContains kullanıyordum ancak Cosmos g.V() ile mevcut değil gibi görünüyor. HasLabel ('person'). ('Name', textContains ('Jr')) –

cevap

2

Şu anda CosmosDB için metin eşleştirme işlevleri mevcut değil. Ancak, ben JavaScript maçı kullanan bir UDF (kullanıcı tanımlı fonksiyon) kullanarak bir joker arama işlevi uygulamak başardı() fonksiyonu: Sonra

function userDefinedFunction(input, pattern) { return input.match(pattern) !== null; }; 

Eğer SQL gibi Sorgunuzu yazmak zorunda ve kullanmayı tercih ediyorum tanımladığınız UDF (aşağıdaki örnek size 'regex'

SELECT * FROM c where(udf.REGEX(c.name[0]._value, '.*Jr.*') and c.label='person') 

işlev denir varsayar çözüm kabul edilebilir olup olmadığını da gecikme ve maliyet bakış açılarına dayalı karar vermeniz gerekir, böylece performans ideal olmaktan uzak olacaktır.