Alfresco Lucene通过Java API搜索结果与Nodebrowser中的结果不同

时间:2013-10-31 13:09:17

标签: lucene alfresco

我使用启用了Lucene的Alfresco 4.1。我有一个'myfoldertype'类型的文件夹,名为'one two'。名称上的标记化(默认情况下)已启用。 我通过自己的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中得到结果集中的预期文件夹。

2 个答案:

答案 0 :(得分:2)

在Java中,你没有正确地逃避\

因此@cm\:name:*one*应为@cm\\:name:*one*

答案 1 :(得分: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);