GreatBittern
GreatBittern

Reputation: 218

Alfresco Lucene search results via Java API differ from results in Nodebrowser

I use Alfresco 4.1 with Lucene enabled. I have a folder of type 'myfoldertype' and named 'one two'. Tokenization on the name is (by default) enabled. I search by name on a specific type of folder, via my own Java backed webscript. Like this:

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*"

I run this query in the authentication context of a user with AuthenticationUtil.runas(). The user has read-access to this folder.

Now, the resultset contains 0 results.

But if I copy/paste the query from the log into the Nodebrowser (in Lucene mode), it DOES return the expected folder.

What could cause this difference? Obviously I would like to get the expected folder in the resultset in my webscript as well.

Upvotes: 1

Views: 1805

Answers (2)

GreatBittern
GreatBittern

Reputation: 218

The cause was that my webscript was running under the (JVM default) locale of en-US, but the Nodebrowser was running under the UI locale nl-NL. The cm:name property is of datatype d:text, which has different analyzers for en (AlfrescoStandardAnalyzer) and nl (DutchAnalyzer).

I changed the webscript to use the nl locale and now it returns the same results as the Nodebrowser:

import org.springframework.extensions.surf.util.I18NUtil;
...
I18NUtil.setLocale(new Locale("nl"));
return searchService.query(sp);

Upvotes: 2

Tahir Malik
Tahir Malik

Reputation: 6643

In Java you're not escaping the \ properly

So @cm\:name:*one* should be @cm\\:name:*one*

Upvotes: 2

Related Questions