I got an error within Alfresco search page, when I try to sort by my custom property:
environment:
- Alfresco 5.0.1
- Postgres
- Solr4
- tomcat 7
Error:
2015-05-12 12:54:34,864 ERROR [solr.core.SolrCore] [http-bio-8443-exec-7] org.apache.solr.common.SolrException: sort param could not be parsed as a query, and is not a field that exists in the index: @{http://global.oup.com/dam/model/1.0}supplierName
at org.apache.solr.search.QueryParsing.parseSortSpec(QueryParsing.java:358)
at org.alfresco.solr.query.AbstractQParser.getSort(AbstractQParser.java:569)
at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:175)
at org.apache.solr.handler.component.AlfrescoSearchHandler.handleRequestBody(AlfrescoSearchHandler.java:233)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1962)
at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:777)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:418)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:207)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:613)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:744)
Caused by: org.apache.solr.search.SyntaxError: Expected identifier at pos 0 str='@{http://global.oup.com/dam/model/1.0}supplierName desc'
at org.apache.solr.search.QueryParsing$StrParser.getId(QueryParsing.java:770)
at org.apache.solr.search.QueryParsing$StrParser.getId(QueryParsing.java:749)
at org.apache.solr.search.FunctionQParser.parseValueSource(FunctionQParser.java:345)
at org.apache.solr.search.FunctionQParser.parse(FunctionQParser.java:68)
at org.apache.solr.search.QParser.getQuery(QParser.java:141)
at org.apache.solr.search.QueryParsing.parseSortSpec(QueryParsing.java:286)
... 25 more
My custom field is configured as following into the content model file:
<types>
<type name="oup:asset">
<title>Asset</title>
<parent>ipp:asset</parent>
<property name='oup:supplierName'>
<title>Supplier Name</title>
<description>Name of the supplier (note there is also a supplier
specified on asset rights)
</description>
<type>d:mltext</type>
<mandatory enforced='false'>true</mandatory>
<multiple>true</multiple>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>both</tokenised>
</index>
</property>
</type>
</types>
As far as I know, the index configuration should be fine, I tried also putting atomic to false with no luck.
The above configuration was working fine using Alfresco 4.1.1 and Solr 1, but now, the porting to Alfresco 5 and Solr 4 does not work.
I tried the js code from the javascript console in the Alfresco Admin page using the search service and the sorting works fine for cm:name but not for oup:supplierName, following the code:
var orderedNodes = search.luceneSearch("@cm\\:name:\"my-file\"", "@oup:supplierName", false);
logger.log("retrieved " + orderedNodes.length + " nodes\n");
Any Idea ?
<multiple>true</multiple>. Also, I read this article: docs.alfresco.com/5.0/concepts/search-fts-config.html, it seems that for Alfresco 5 there is another tag for the faceted search which I need to implement, but it seems not working with<atomic>true</atomic>- Giuseppe Adaldo