即使在创建 -
中指定的建议索引后,拼写检查也无法在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中实施了拼写检查。我的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'和SPELLCHECK(' tetspage')
(' testpage'是一个页面;拼写错误为' tetspage')
按照文档
中的说明运行此查询SELECT [rep:spellcheck()] FROM nt:base WHERE [jcr:path] =' /'和SPELLCHECK(' jackrabit')
返回单个节点。
我做错了什么;这个指数适用于任何人的AEM 6.1吗?
答案 0 :(得分:1)
此查询适用于我
SELECT [rep:spellcheck()] FROM [nt:base] WHERE SPELLCHECK('tetspage') AND ISDESCENDANTNODE('/content/abc')
答案 1 :(得分:0)
我在使用“ 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());
}