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>
Ожидаемое поведение
Если пользователь проходит диапазон лет, то он должен возвращать документы в пределах указанного диапазона, если нет, то он не будет применять диапазон лет