即使在创建了 - 中指定的建议索引后,拼写检查也无法在AEM 6.1中运行
https://docs.adobe.com/docs/en/aem/6-1/deploy/platform/queries-and-indexing.html和
https://jackrabbit.apache.org/oak/docs/query/lucene.html
根据文档,自版本1.1.17和1.0.13以来,已在OAK中实施了spellcheck。我的OAK版本是1.22所以它应该工作.AEM版本是6.1.0.20150507
创建了一个像 - 的索引
/oak:index/lucene-spellcheck
- jcr:primaryType = "oak:QueryIndexDefinition"
- compatVersion = 2
- type = "lucene"
- async = "async"
+ indexRules
- jcr:primaryType = "nt:unstructured"
+ nt:base
+ properties
- jcr:primaryType = "nt:unstructured"
+ jcr:title
- propertyIndex = true
- analyzed = true
- useInSpellcheck = true
当我使用CRX-DE的查询工具以及使用jsp中的查询管理器运行此查询时,我得到零结果。
SELECT [rep:spellcheck()] FROM nt:base WHERE [jcr:path] ='/ content / abc'AND SPELLCHECK('tetspage')
('testpage'是一个页面;拼错为'tetspage')
按照文档中的说明运行此查询
SELECT [rep:spellcheck()] FROM nt:base WHERE [jcr:path] ='/'AND SPELL CHECK('jackrabbit')
返回单个节点。
我做错了什么;这个指数适用于任何人的AEM 6.1吗?
此查询适用于我
SELECT [rep:spellcheck()] FROM [nt:base] WHERE SPELLCHECK('tetspage') AND ISDESCENDANTNODE('/content/abc')
我在“rep:suggest()”查询中遇到了类似的问题,而不是“rep:spellcheck()”,但也许该解决方案适合您。
当我直接在CRX DE中尝试查询时,结果是一个节点,我在该节点上看不到任何内容。但是,从我的代码执行查询我发现查询的结果存储为“行”。要处理“行”我使用此代码,希望它可以帮助您:
String sql = "SELECT [rep:suggest()] FROM cq:PageContent WHERE ISDESCENDANTNODE('" + path + "/') AND SUGGEST('" + text + "')";
Query q = qm.createQuery(sql, Query.SQL);
List<String> results = Lists.newArrayList(); // <--- Actual query results
RowIterator it = q.execute().getRows();
while (it.hasNext()) {
Row row = it.nextRow();
results.add(row.getValue("rep:suggest()").getString());
}