我无法在顶点的嵌入式列表(或边缘(上执行通配符 - Query。
例如:假设我们有一个Person
类,其中一个名为Nicknames
的多值属性,一个实例:
{
"@type": "d",
"@rid": "#317:0",
"@version": 1,
"@class": "Person",
"Nicknames": [
"zito",
"ziton",
"zitoni"
]
}
然后, Select FROM Person WHERE Nicknames like "zit%"
返回空的结果集,而:
Select FROM Person WHERE Nicknames ="zito"
正确返回1个项目。
字段上有NOTUNIQUE_HASH_INDEX
索引Nicknames
。
我尝试了多种方法(包含,索引 - Query ...(,没有运气:(
我可能缺少基本的东西。
我知道不是我要写的理想解决方案AVK表示,使用Lucene索引是一个更好的想法,但是对于标准实施,我无法让它起作用,现在在这里我所做的工作:
使用Studio创建一个带有2个参数的JavaScript函数,带有名称" Array"one_answers" Rule",让我们命名函数" Wildcardsearch"
在函数正文中超过此代码(如果dosent执行工作,只是简单的javascript将其更改(:
for(i=0; i<array.length ; i++){
rule= rule.split("*").join(".*");
rule= rule.split("*").join(".*");
rule= "^" + ruleValue + "$";
var regex = new RegExp(rule);
if (regex.test(array[i]))
return true;
}
return false;
记住保存fucntion
现在您可以查询:
Select from Person where wildcardSearch(nicknames,'zit*')=true
注意事项:是一种蛮力的方法,但要显示如何使用OrientDB中的"存储过程"来播放"有趣"您,它会扫描所有课程,并在数组上进行循环以应用正则表达式。索引是一种更好的解决方案,或使用不同的数据结构更改DB。
您可以尝试以下方法:
select from Person where Nicknames containstext 'zit'
希望有帮助