В настоящее время не существует способа создания индекса для processing-instruction()
(с использованием path-range-index или другого).
Если вы уже используете образец конверта , вы можете материализовать это processing-instruction()
как элемент в вашем конверте, т.е. <docpage num="i"/>
, а затем использовать cts:element-attribute-value-query()
cts:and-query((
cts:element-word-query(xs:QName("primaryie"), $textname, "case-insensitive"),
cts:or-query((
cts:element-query(xs:QName("beginpage"),
cts:element-attribute-value-query(xs:QName("docpage"), xs:QName("num"), "i")
))
))
Или вы можете создать свойство документа и затем использовать cts:properties-fragment-query()
cts:and-query((
cts:element-word-query(xs:QName("primaryie"), $textname, "case-insensitive"),
cts:or-query((
cts:element-query(xs:QName("beginpage"),
cts:document-fragment-query(
cts:element-attribute-value-query(xs:QName("docpage"), xs:QName("num"), "i")
)
))
))
В противном случае вам потребуется выполнить фильтрацию с помощью XPath для результатов поиска.
cts:search(doc(),
cts:element-word-query(xs:QName("primaryie"), $textname, "case-insensitive")
)[book/(beginpage or processing-instruction("docpage") = 'num="i"')]
Для этого потребуется фильтрация (чтение сопоставленных документов), поэтому скорость ответа на этот запрос будет зависеть от количества документов, возвращаемых по критериям поиска, и от ограничений на количество документов, которые вы хотите вернуть.