2017-07-01 44 views
6

Có thể tìm kiếm các thuộc tính Vertex có chứa trong Azure Cosmos Graph DB không? Ví dụ: Tôi muốn tìm tất cả những người có tên là 'Jr' trong tên của họ?Azure Cosmos DB Graph Tìm kiếm ký tự đại diện

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

Có vẻ như hàm within('') chỉ lọc giá trị chính xác bằng 'Jr'. Tôi đang tìm một thùng chứa. Lý tưởng là không phân biệt chữ hoa chữ thường.

+1

Thông thường với Tinkerpop/gremlin, bạn có thể thực hiện một số giống như 'gV(). hasLabel ('person) .filter {it.getProperty (' name '). toLowerCase(). chứa (' jr ')}. giá trị (' name ')' nhưng Cosmos DB Graph chưa hỗ trợ đóng cửa. Sẽ trả lời chủ đề này khi đã đóng cửa. –

+0

Tôi đã sử dụng textContains khi sử dụng Titan nhưng có vẻ như không có sẵn với Cosmos g.V(). HasLabel ('person'). Có ('name', textContains ('Jr')) –

Trả lời

2

Không có chức năng khớp văn bản nào khả dụng cho CosmosDB tại thời điểm này. Tuy nhiên, tôi đã có thể thực hiện một chức năng tìm kiếm ký tự đại diện bằng cách sử dụng một UDF (User Defined Function) trong đó sử dụng các trận đấu Javascript() chức năng:

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

Sau đó, bạn sẽ phải viết câu hỏi của bạn như SQL và sử dụng UDF mà bạn định nghĩa (ví dụ dưới đây giả sử bạn gọi anh em hoạt động 'regex'

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

việc thực hiện sẽ là xa lý tưởng, do đó bạn cần phải quyết định nếu các giải pháp có thể chấp nhận hay không dựa trên độ trễ và chi phí của bạn quan điểm.

Các vấn đề liên quan