We have a requirement for searching the marklogic database for documents
that satisfies a specific condition - length attribute value should be
within the specified range and one or more chapters from the given chapters
should be available. The searched information is then filtered based on a
fitness calculation.
The execution of the query takes a long time if the dynamic or-query becomes
long (for bigger inputs, the or-query formed will be longer)
Are there better ways to optimize this search query or atleast the or-query
alone?

QUERY:
for $a in
cts:search(collection(),
cts:and-query(
(
cts:and-query(
(cts:element-attribute-range-query(xs:QName("book"), xs:QName("length"),
">=", 26), cts:element-attribute-range-query(xs:QName("book"),
xs:QName("length"), "<=", 2620))
),
cts:or-query(
( cts:element-attribute-value-query(xs:QName("chapter"), xs:QName("name"),
"chap6"), cts:element-attribute-value-query(xs:QName("chapter"),
xs:QName("name"), "newChap"),
cts:element-attribute-value-query(xs:QName("chapter"), xs:QName("name"),
"chap2"), cts:element-attribute-value-query(xs:QName("chapter"),
xs:QName("name"), "chap5"),
cts:element-attribute-value-query(xs:QName("chapter"), xs:QName("name"),
"chap3"), cts:element-attribute-value-query(xs:QName("chapter"),
xs:QName("name"), "chap9"),
cts:element-attribute-value-query(xs:QName("chapter"), xs:QName("name"),
"chap1"), cts:element-attribute-value-query(xs:QName("chapter"),
xs:QName("name"), "chap4"))
)
)
), ("score-simple"))
where $a[(cts:score($a))div(8*($a/book/@chapCnt)) ge 0.1]
return element hit { attribute score { cts:score($a) }, $a }
SAMPLE DOCUMENT IN MARKLOGIC:
 <book author="Author" length="262" id="unique-id" chapCnt="4">
  <chapter pageStart="5" name="chap1" pageEnd="80" />
  <chapter pageStart="83" name="chap2" pageEnd="180" />
  <chapter pageStart="182" name="chap3" pageEnd="401" />
  <chapter pageStart="405" name="chap4" pageEnd="567" />
  </book>

Thanks,
Radhika
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to