field-value-query returning unexpected results when used with 'unfiltered' search in MarkLogic -
i getting false results field-value-query
when used 'unfiltered'
search.
i explain problem sample data given below.
xml:
<book> <name>dixit</name> <age>25</age> <entry> <isbn> <type>hbk</type> <value>1234567</value> </isbn> <isbn> <type>pbk</type> <value>111111</value> </isbn> </entry> <entry> <isbn> <type>hbk</type> <value>1234567</value> </isbn> <isbn> <type>pbk</type> <value>222222</value> </isbn> </entry> </book>
above xml can have multiple <entry>
elements. 2 or more <entry>
can't have same <type>
.
i want entries having combination of 1 or more isbn
type, values.
as in above example. want <entry>
having both hbk:1234567 , pbk:111111
to achieve running below cts:query
cts:search( fn:doc()/book//entry, cts:and-query(( cts:field-value-query("hbk", "1234567", ("case-insensitive")), cts:field-value-query("pbk", "222222", ("case-insensitive")) )), "unfiltered" )
output:
<entry> <isbn> <type>hbk</type> <value>1234567</value> </isbn> <isbn> <type>pbk</type> <value>111111</value> </isbn> </entry>
according me the above output wrong should return below <entry>
.
<entry> <isbn> <type>hbk</type> <value>1234567</value> </isbn> <isbn> <type>pbk</type> <value>222222</value> </isbn> </entry>
even if running cts query 1 field-value-query
given below, getting same result (entry having pbk value 111111)
cts:search( fn:doc()/book//entry, cts:field-value-query("pbk", "222222", ("case-insensitive")), "unfiltered" )
fields have created:
pbk : /book/entry/isbn[./type = 'pbk']/value
hbk : /book/entry/isbn[./type = 'hbk']/value
index settings: (same both fields)
note: filtered search working fine.
please me understand why unexpected behaviour , can correct it.
tried:
cts:search( fn:doc()/book//entry, cts:element-query( fn:qname('','isbn'), cts:and-query(( cts:field-value-query("hbk", "1234567", ("case-insensitive")), cts:field-value-query("pbk", "222222", ("case-insensitive")) )) ), "unfiltered" )
wrap cts:and-query cts:element-query() on isbn element. below approximation of mean:
cts:search( fn:doc()/book//entry, cts:element-query(xs:qname("isbn"), cts:and-query(( cts:element-value-query(xs:qname("hbk"), "1234567", ("case-insensitive")), cts:element-value-query(xs:qname("pbk"), "222222", ("case-insensitive")) )) ), "unfiltered" )
Comments
Post a Comment