拼写检查未在AEM 6.1中搜索

时间:2016-09-13 05:03:07

标签: lucene aem jackrabbit jackrabbit-oak

即使在创建 -

中指定的建议索引后,拼写检查也无法在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吗?

2 个答案:

答案 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());
}