Apache Jackrabbit Oak 1.8 索引 - Lucene 不索引聚合节点中的二进制属性
Apache Jackrabbit Oak 1.8 Indexing - Lucene does not index binary properties in aggregated node
我有以下索引:
oak:index
jcr:primaryType = nt:unstructured
dms-lucene-fulltext-index
compatVersion = 2
async = async
jcr:primaryType = oak:QueryIndexDefinition
evaluatePathRestrictions = true
type = lucene
tags = fulltext
aggregates
jcr:primaryType = nt:unstructured
nt:file
jcr:primaryType = nt:unstructured
include0
path = jcr:content
jcr:primaryType = nt:unstructured
我的文件夹中有以下文件节点:
folder
jcr:created = 2018-02-24T14:32:09.550+01:00
jcr:createdBy =
jcr:primaryType = nt:folder
jcr:uuid = 5c3e4689-84e9-4e34-8b14-029f62172812
test.txt
jcr:created = 2018-02-24T14:32:09.674+01:00
jcr:createdBy = 14
jcr:primaryType = nt:file
jcr:content
jcr:encoding = utf-8
jcr:lastModifiedBy = 14
jcr:mimeType = text/plain; charset=utf-8
jcr:data = the quick brown fox
jcr:lastModified = 2018-02-24T14:32:09.673+01:00
jcr:primaryType = nt:resource
jcr:uuid = 52f224e8-db57-4879-9d6a-94862f65fb8d
如果我执行以下查询,我将得到该文件作为结果:
SELECT * FROM [nt:file] WHERE ISDESCENDANTNODE('/folder') AND CONTAINS(*,'plain')
所以 mimeType 在索引中。但是二进制文件不是,因为以下查询没有结果:
SELECT * FROM [nt:file] WHERE ISDESCENDANTNODE('/folder') AND CONTAINS(*,'fox')
我希望任何人都可以告诉我我在这里做错了什么,谢谢!
您还需要在定义中包含 nt:file
索引规则。
因此,只需在您的 def 中添加以下内容(以及您的聚合规则)
+ /oak:index/dms-lucene-fulltext-index
+ indexRules
+ nt:file
您不需要任何 属性 定义 - 索引规则是索引过程的起点 - 在被索引的节点匹配索引规则后将查询聚合规则。
经过长时间的调查,我终于找到了解决问题的方法。
我在 pom.xml 中添加了以下依赖项:
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>RELEASE</version>
</dependency>
然后我的自定义 tika 配置也被加载并且二进制属性被索引!
我有以下索引:
oak:index
jcr:primaryType = nt:unstructured
dms-lucene-fulltext-index
compatVersion = 2
async = async
jcr:primaryType = oak:QueryIndexDefinition
evaluatePathRestrictions = true
type = lucene
tags = fulltext
aggregates
jcr:primaryType = nt:unstructured
nt:file
jcr:primaryType = nt:unstructured
include0
path = jcr:content
jcr:primaryType = nt:unstructured
我的文件夹中有以下文件节点:
folder
jcr:created = 2018-02-24T14:32:09.550+01:00
jcr:createdBy =
jcr:primaryType = nt:folder
jcr:uuid = 5c3e4689-84e9-4e34-8b14-029f62172812
test.txt
jcr:created = 2018-02-24T14:32:09.674+01:00
jcr:createdBy = 14
jcr:primaryType = nt:file
jcr:content
jcr:encoding = utf-8
jcr:lastModifiedBy = 14
jcr:mimeType = text/plain; charset=utf-8
jcr:data = the quick brown fox
jcr:lastModified = 2018-02-24T14:32:09.673+01:00
jcr:primaryType = nt:resource
jcr:uuid = 52f224e8-db57-4879-9d6a-94862f65fb8d
如果我执行以下查询,我将得到该文件作为结果:
SELECT * FROM [nt:file] WHERE ISDESCENDANTNODE('/folder') AND CONTAINS(*,'plain')
所以 mimeType 在索引中。但是二进制文件不是,因为以下查询没有结果:
SELECT * FROM [nt:file] WHERE ISDESCENDANTNODE('/folder') AND CONTAINS(*,'fox')
我希望任何人都可以告诉我我在这里做错了什么,谢谢!
您还需要在定义中包含 nt:file
索引规则。
因此,只需在您的 def 中添加以下内容(以及您的聚合规则)
+ /oak:index/dms-lucene-fulltext-index
+ indexRules
+ nt:file
您不需要任何 属性 定义 - 索引规则是索引过程的起点 - 在被索引的节点匹配索引规则后将查询聚合规则。
经过长时间的调查,我终于找到了解决问题的方法。
我在 pom.xml 中添加了以下依赖项:
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>RELEASE</version>
</dependency>
然后我的自定义 tika 配置也被加载并且二进制属性被索引!