我正试图让我了解如何让Lucene使用服务器端挂钩改变其值的字段 - 我正在使用OrientDB 2.0.8。 这是我的情景:
我定义了一个包含的小模式 - '学生'VertexType - 'Student'顶点类型的'name'字符串属性 - 此'name'属性的Lucene索引
我按如下方式实现ODocumentHookAbstract: - 在构造函数中我包括:setIncludeClasses(“Student”) - onRecordBeforeCreate - 如果'name'属性不是NULL,我加密它 - onRecordBeforeUpdate - 我加密'name'属性,如果它不是NULL(如前一个方法的情况);我返回RESULT.RECORD_CHANGED - onRecordBeforeRead - 我解密'name'属性并返回RESULT.RECORD_CHANGED
我在数据库中加入了一些“学生”
我尝试运行表单查询:SELECT * FROM Student WHERE name LUCENE'前缀*'
假设我有一个名为'John'的学生,我的期望是如果提供的'前缀'是'Jo',则查询返回'John' - 因此透明地通过加密 - 解密阶段。但是,这不会发生 - 即查询不返回John。另一方面,如果我查询John的加密值,我可以检索它。
你能否告诉我在这种情况下我做错了什么?基本上,我想要的是隐藏加密步骤,但仍然能够查询全文索引,好像加密不存在一样。
谢谢! 铎