The following code works as expected (which proves the element range indexes 
exist and are working properly):

declare function local:get-query( $constraints as node()* ) {
    cts:and-query(
    for $i in $constraints//constraint
    return
        if( $i/@name = "comments" )
        then ( cts:element-query( xs:QName( "comments" ), cts:word-query( 
$i/text(), ( "lang=en","case-insensitive" ), 1), () ) )
        else ( cts:element-query( xs:QName( $i/@name ), $i/text()) )
    )
};

declare function local:search( $query ) {
    cts:search( doc()//annotation, $query )
};

declare function local:get-facets( $elementName, $query ) {
    cts:element-values( xs:QName( $elementName ), "*", ( "ascending" ), $query )
};

let $constraints :=
    <constraints>
        <constraint name="highlight">green</constraint>
        <constraint name="ug-tag">faith</constraint>
    </constraints>
let $query := local:get-query( $constraints )
let $hits := local:search( $query )
return <hits>{ $hits }</hits>

However, when I try to do the same thing with search:search, I get an error 
(XDMP-ELEMRIDXNOTFOUND) using the following code:

let $options :=
        <options xmlns="http://marklogic.com/appservices/search";>
            <debug>true</debug>
            <searchable-expression>//annotation</searchable-expression>
            <return-facets>true</return-facets>
             <constraint name="ug-tag">
                <range type="xs:string" facet="true">
                    <element ns="" name="ug-tag"/>
                    <facet-option>frequency-order</facet-option>
                    <facet-option>descending</facet-option>
                </range>
             </constraint>
             <constraint name="highlight">
                <range type="xs:string" facet="true">
                    <element ns="" name="highlight"/>
                    <facet-option>frequency-order</facet-option>
                    <facet-option>descending</facet-option>
                </range>
            </constraint>
            <constraint name="book">
                <range type="xs:string" facet="true">
                    <element ns="" name="annotation"/>
                    <attribute ns="" name="book"/>
                    <facet-option>frequency-order</facet-option>
                    <facet-option>descending</facet-option>
                </range>
             </constraint>
        </options>
    return search:search( "", $options )

I both cases, I am using the same element range indexes. The error occurs 
regardless of the collation used when setting up the indexes. When I execute 
the search:search function without debug on, it only blows up when I use a 
facet search parameter (e.g., highlight:green). However, if I just provide a 
simple keyword search, I get the expected results as well as the expected 
facets.

What am I missing?


 NOTICE: This email message is for the sole use of the intended recipient(s) 
and may contain confidential and privileged information. Any unauthorized 
review, use, disclosure or distribution is prohibited. If you are not the 
intended recipient, please contact the sender by reply email and destroy all 
copies of the original message.


_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general

Reply via email to