2017-07-01 25 views
6

Czy można przeszukiwać właściwości wierzchołków za pomocą danych zawartych w DB bazy danych Azure?Wyszukiwanie symboli wieloznacznych na mapie Azure Cosmos DB Wyszukiwanie

Na przykład, chciałbym znaleźć wszystkie osoby, które mają 'Jr' w ich nazwie?

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

Wydaje się funkcja within('') filtruje tylko wartości, które są dokładnie równe 'Jr'. Szukam zawartych. Idealnie nieczuły na wielkość liter.

+1

Zwykle z Tinkerpop/gremlin, możesz zrobić kilka rzeczy takie jak 'gV(). hasLabel (" osoba ") .filter {it.getProperty (" nazwa "). toLowerCase(). zawiera (" jr ")}. wartości (" nazwa ")' ale Cosmos DB Graph nie ma jeszcze obsługa zamknięć. Odpowiedzi na ten wątek po udostępnieniu zamknięcia. –

+0

Używałem textContains podczas używania Titan, ale wygląda na to, że nie jest dostępne z Cosmos g.V(). HasLabel ("osoba"). Ma ("name", textContains ("Jr")) –

Odpowiedz

2

Żadna z funkcji dopasowywania tekstu nie jest obecnie dostępna dla CosmosDB. Jednak udało mi się wdrożyć wieloznaczny funkcji wyszukiwania za pomocą UDF (User Defined Function), która wykorzystuje meczu Javascript() funkcja:

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

Wtedy trzeba by napisać zapytanie SQL i jak używać UDF, że określone (poniższy przykład zakłada, że ​​nazywa się pan funkcjonować „REGEX”

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

występ będzie daleki od ideału, więc trzeba zdecydować, czy rozwiązanie jest dopuszczalne, czy nie na podstawie swoich opóźnień i kosztów perspektyw.