1

我使用启用了 Lucene 的 Alfresco 4.1。我有一个类型为“myfoldertype”并命名为“一二”的文件夹。名称上的标记化(默认情况下)已启用。我通过我自己的 Java 支持的 webscript 按名称搜索特定类型的文件夹。像这样:

SearchParameters sp = new SearchParameters();
sp.addStore(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE);
sp.setLanguage(SearchService.LANGUAGE_LUCENE);
sp.setQuery("TYPE:\"mymodel:myfoldertype\" AND @cm\\:name:*one*"

我使用 AuthenticationUtil.runas() 在用户的身份验证上下文中运行此查询。用户对该文件夹具有读取权限。

现在,结果集包含 0 个结果。

但是,如果我将查询从日志复制/粘贴到 Nodebrowser(在 Lucene 模式下),它确实会返回预期的文件夹。

什么可能导致这种差异?显然,我也想在我的 webscript 的结果集中获得预期的文件夹。

4

2 回答 2

2

原因是我的 webscript 在 en-US 的(JVM 默认)语言环境下运行,但 Nodebrowser 在 UI 语言环境 nl-NL 下运行。cm:name 属性是数据类型 d:text,它对 en (AlfrescoStandardAnalyzer) 和 nl (DutchAnalyzer) 有不同的分析器。

我将 webscript 更改为使用 nl 语言环境,现在它返回与 Nodebrowser 相同的结果:

import org.springframework.extensions.surf.util.I18NUtil;
...
I18NUtil.setLocale(new Locale("nl"));
return searchService.query(sp);
于 2013-11-26T08:40:16.207 回答
2

在 Java 中,你没有\正确地转义

所以@cm\:name:*one*应该是@cm\\:name:*one*

于 2013-11-01T14:50:32.147 回答