MarkLogi c: Как управлять дополнительным запросом в ограничении - PullRequest
1 голос
/ 22 апреля 2020

MarkLogi c 9.0.8

В пользовательском интерфейсе, кроме текста поиска, применяется несколько фильтров, включая publi sh date year. Поскольку мы не можем контролировать, как конечный пользователь будет писать запрос в многострочном текстовом поле.

Таким образом, в конце запрос выглядит как-то

  • AU: Mani sh AND PY:> = 2001 И CT: Контроль И UT: неуправляемый И PY: <= 2010 </li>
  • (AU: Мани sh И PY:> = 2001) ИЛИ (CT: Контроль И UT: неуправляемый И PY: <= 2010) </li>
  • AU: Mani sh И CT: Control & UT: неуправляемый и PY:> = 2001 И PY: <= 2010 </li>

До сих пор нам удавалось иметь годовой диапазон в конец запроса и работал со следующим кодом

Qyery: AU: Mani sh И CT: управление и UT: неуправляемый ИЛИ PY:> = 2001 И PY: <= 2010 </strong>

<additional-query>
{
  cts:and-query((
       cts:path-range-query("contg/sortdate/yr", ">=",xs:int($startYear)),
       cts:path-range-query("contg/sortdate/yr", "<=",xs:int($endYear))))  
}
</additional-query>

Но теперь, когда пользователь может указывать диапазон года в любом месте текста запроса, он не работает должным образом

Итак, можем ли мы написать условие в ограничении напрямую и как разместить дополнительный запрос внутри?

<constraint name="Year">
   <range type="xs:int" facet="false">
       <path-index>article/date/year</path-index>
   </range>
</constraint>

Ожидаемое поведение

Если пользователь проходит диапазон лет, то он должен возвращать документы в пределах указанного диапазона, если нет, то он не будет применять диапазон лет

...