Как искать с помощью «ПОИСКПОЗ» в OrientDB без учета регистра?

Я использую OrientDB версии 2.2.30 и хочу найти всех, кто связан с БЕЛОЙ машиной.

Обе вершины (человек и объект) настроены на нечувствительность к регистру во всех строковых свойствах.

Проблема в том, что слово «белый» пишется в верхнем и нижнем регистре, и ПОИСКПОЗ возвращает только те, которые соответствуют точной форме, которую я пишу в запросе.

MATCH {class:Person, as:E0}.outE(){class:Drive, as:R0}.inV(){class:Car, as:E1 , where:( (   CarColor IN ['white']   ) ) } RETURN $paths

Это вернет все пути совпадения, но только если слово «белый» написано как запрос: «белый» (БЕЛЫЙ или БЕЛЫЙ не будут получены в результате, даже если это поле настроено как НЕчувствительный к регистру)

Забавно то, что если я возьму условие цвета OUT из запроса «match» и помещу его в «обычное» предложение where, оно будет работать нормально и извлекать все верхние и нижние регистры.

SELECT  *
 FROM 
 ( MATCH {class:Person, as:E0}.outE(){class:Drive, as:R0}.inV(){class:Car, as:E1 } RETURN $paths )
WHERE ( (   E1.CarColor IN ['white']   ) )

Но это решение приводит к тому, что запрос на совпадение выполняется намного дольше... Поэтому мне нужно другое решение для использования "сопоставления" с условиями, которые будут применяться как НЕчувствительные к регистру...

Спасибо.


person Tami Wert    schedule 09.07.2018    source источник


Ответы (1)


Проще всего использовать .toLowerCase(), например. CarColor.toLowerCase() IN ['white']

person Luigi Dell'Aquila    schedule 09.07.2018
comment
Я думал об этом, но как я могу сделать toLower(), если свойство «CarColor» встроено в список? (и, кроме того, зачем мне toLower, если для свойства установлено значение «без учета регистра»???) - person Tami Wert; 10.07.2018
comment
Пожалуйста, обратитесь к моему комментарию выше. У меня такая же проблема со свойством со встроенным списком (строк), и я не думаю, что смогу выполнить toLowerCase для свойства с несколькими значениями... - person Tami Wert; 11.07.2018