通过JavaAPI的AlfrescoLucene搜索结果与Nodebrowser中的结果不同

通过JavaAPI的AlfrescoLucene搜索结果与Nodebrowser中的结果不同,lucene,alfresco,Lucene,Alfresco,我使用Alfresco 4.1并启用Lucene。我有一个“myfoldertype”类型的文件夹,名为“一两”。名称上的标记化(默认情况下)已启用。 我通过自己的Java支持的webscript按名称搜索特定类型的文件夹。像这样: SearchParameters sp = new SearchParameters(); sp.addStore(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE); sp.setLanguage(SearchService.LAN

我使用Alfresco 4.1并启用Lucene。我有一个“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()在用户的身份验证上下文中运行此查询。用户对此文件夹具有读取权限

现在,resultset包含0个结果

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


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

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


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

在Java中,您没有正确地避开
\


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

原因是我的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);

原因是我的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);

很抱歉,我粘贴了日志中的查询,这里已经计算了转义反斜杠。它们实际上存在于Java代码中。我更正了这个示例。很抱歉,我粘贴了日志中的查询,其中已经计算了转义反斜杠。它们实际上存在于Java代码中。我纠正了这个例子。我似乎是因为使用了不同的地区。我的代码是在EN语言环境中运行的,而Nodebrowsers是在NL语言环境中运行的。我将进一步调查并尝试全面回答这个问题。如何在默认参数下获取alfresco的名称。??Alfresco的E.X.用户有名字、姓氏和电子邮件id,所以我想通过lucene查询通过电子邮件id找到特定的用户,所以…Umang,我认为你应该为你的问题提供一个新的线索,并详细说明你实际上在尝试做什么。我似乎是因为使用了不同的地区。我的代码是在EN语言环境中运行的,而Nodebrowsers是在NL语言环境中运行的。我将进一步调查并尝试全面回答这个问题。如何在默认参数下获取alfresco的名称。??Alfresco的E.X.用户有名字、姓氏和电子邮件id,所以我想通过lucene查询通过电子邮件id找到特定的用户,所以…Umang,我认为你应该为你的问题提供一个新的线索,并详细说明你实际上在做什么。