Поиск без учета регистра Gremlin - PullRequest
0 голосов
/ 25 сентября 2019

Я новичок в Gremlin и использую консоль Gremlin для чтения данных из графической базы данных.На графике есть вершины с меткой «Устройство».Эти вершины имеют свойство "имя", связанное с ними.Мне нужно выяснить, есть ли вершина с определенным именем.Эта проверка должна быть без учета регистра.

Предположим, что я должен был сделать это в реляционной базе данных, я мог бы написать следующий запрос:

SELECT * FROM device d WHERE LOWER(d.name) = 'mydevice'

Я ищу функцию, аналогичную 'LOWER' в Gremlin.Если для этого нет функции, может кто-нибудь сказать мне, как я могу искать свойства вершин, не рассматривая алфавитный регистр?

Спасибо.

1 Ответ

0 голосов
/ 25 сентября 2019

Официально, Gremlin в настоящее время имеет только три текстовых предиката на данный момент, которые выставляются TextP: startingWith, endingWith и containing (а также их отрицаниями), но их значение по умолчаниюРеализации чувствительны к регистру:

gremlin> g.V().has('person','name',containing('ark')).values('name')
==>marko
gremlin> g.V().has('person','name',containing('Ark')).values('name')
gremlin> 

В зависимости от используемой вами базы данных графиков с поддержкой TinkerPop вам могут быть доступны такие функции, а также другие более сложные параметры поиска (например, регулярное выражение).Например, JanusGraph поддерживает полнотекстовый поиск без учета регистра, а также множество других опций .В DS Graph также имеется система поиска расширенного текста поверх основных опций Gremlin.Таким образом, если у вас есть явная потребность в типе поиска, который вы описываете, вам, возможно, придется изучить опции, предоставляемые отдельными графическими системами.

Хотя это не рекомендуется по ряду причин, вы можете использовать лямбду:

gremlin> g.V().filter{it.get().value('name').toUpperCase() == 'MARKO'}.values('name')
==>marko

Недостатком лямбды является то, что:

  1. они не являютсяподдерживается всеми провайдерами, и, следовательно, переносимость вашего кода уменьшается
  2. , они заставляют запросы оцениваться способом, который может быть более дорогостоящим, чем обход, который строго использует шаги Gremlin.

TinkerPopпостепенно выявляет общие черты среди вариантов поиска, предоставляемых различными поставщиками, и будет продолжать обобщать эти функции по мере появления возможности, чтобы они были доступны в качестве первоклассных граждан на самом языке Gremlin.

...