I still don't know the search API as well as I might. But I believe that the first problem is that functions are described by a local-name and a namespace. You've only supplied the local-name "custom-snippet" and not the namespace "http://www.w3.org/2005/xquery-local-functions". I wasn't sure how to do this, so I checked http://developer.marklogic.com/pubs/4.2/books/search-dev-guide.pdf and found an example in 2.1.7 "Search Customization Via Options and Extensions".
<options xmlns="http://marklogic.com/appservices/search"> <transform-results apply="custom-snippet" ns="http://www.w3.org/2005/xquery-local-functions"/> </options> This throws a new error: SEARCH-BADEXTENSION: (err:FOER0000) Extensions must define @apply, @ns and @at We're making progress, but @at seems to be the library module location (eg, '/lib.xqy'). So it looks like you have to put the function into a library module. The function can't be defined in the cq textarea, because that area needs to define a main module. Even if cq could define a library module, it wouldn't have a location for transform-results to refer to. -- Mike On 10 Aug 2011, at 10:05 , Mattio Valentino wrote: > I was trying to test adding my own search snippeting function using > the search:search API but ran into some trouble trying to use it in > cq. I was trying to keep the custom function in the same main module > as the search itself. I keep getting the error: > > [1.0-ml] SEARCH-APPLYUNDEFINED: (err:FOER0000) Value of @apply > undefined: custom-snippet > > Is there a trick to make this work in the same module in cq or does > the custom function have to be in a separate file with @ns and @at > defined? > > The query is below. > > Thanks! > > xquery version "1.0-ml"; > import module namespace > search="http://marklogic.com/appservices/search" at > "/MarkLogic/appservices/search/search.xqy"; > > declare function local:custom-snippet( > $result as node(), > $ctsquery as schema-element(cts:query), > $options as element(search:transform-results)? > ) as element(search:snippet) > { > (:search:snippet($result, $ctsquery, $options):) > <search:snippet/> > }; > > search:search("blue", > <options xmlns="http://marklogic.com/appservices/search"> > (: I've tried multiple variations of this node :) > <transform-results apply="custom-snippet"/> > </options> > ) > _______________________________________________ > General mailing list > [email protected] > http://developer.marklogic.com/mailman/listinfo/general > _______________________________________________ General mailing list [email protected] http://developer.marklogic.com/mailman/listinfo/general
