2017-07-01 68 views
6

是否可以使用Azure Cosmos圖形數據庫中的包含來搜索頂點屬性?Azure Cosmos數據庫圖形通配符搜索

例如,我想查找所有名稱中含有'Jr'的人?

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

好像within('')功能僅過濾屬於正好等於'Jr'值。我正在尋找一個包含。 理想情況下不區分大小寫。

+1

通常使用Tinkerpop/gremlin,你可以做一些例如'gV()。hasLabel('person).filter {it.getProperty('name')。toLowerCase()。contains('jr')}。values('name')'但是Cosmos DB Graph還沒有支持關閉。一旦關閉可用,將回應此線程。 –

+0

我在使用Titan時使用textContains,但它看起來不像Cosmos g.V()。hasLabel('person')。has('name',textContains('Jr')) –

回答

2

目前沒有文字匹配功能可供CosmosDB使用。不過,我可以用它使用JavaScript的比賽一個UDF(用戶定義函數)來實現通配符搜索功能()函數:

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

然後,你必須寫查詢作爲SQL和使用你定義的UDF(下面的示例假定你叫你的功能「正則表達式」

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

表現會很不理想,所以你需要決定是否該解決方案是可以接受的或不是基於你的延遲和成本的觀點。