2016-04-08 10 views
1

У меня есть некоторый документ, подобный этому, и у меня есть индекс диапазона на элемент «ключ».Можем ли мы использовать привязанный пользователем якорь для вычисляемого ведра в ограничениях диапазона?

<root> 
    <key>NAM</key> 
    <key>NA</key> 
    <key>North America</key> 
</root> 

При создании граней, я хочу, чтобы вычислить «NAM» и «НС» в одну группу, вместо того, чтобы каждый из них.

Так что я попытался использовать вычисленный-ведро, более или менее как в этом примере:

<constraint name="date"> 
    <range type="xs:dateTime" facet="true"> 
    <element ns="http://example.com" name="entry"/> 
    <attribute ns="" name="date"/> 

    <computed-bucket lt="-P1Y" anchor="start-of-year" name="older">Older</computed-bucket> 
    <computed-bucket lt="P1Y" ge="P0Y" anchor="start-of-year" name="year">This Year</computed-bucket> 
    <computed-bucket lt="P1M" ge="P0M" anchor="start-of-month" name="month">This Month</computed-bucket> 
    <computed-bucket lt="P1D" ge="P0D" anchor="start-of-day" name="today">Today</computed-bucket> 
    <computed-bucket ge="P0D" anchor="now" name="future">Future</computed-bucket> 

    <facet-option>descending</facet-option> 
    </range> 
</constraint> 

Но я заметил, что якорь, как правило, предварительно определяется MarkLogic, поэтому я спрашиваю: могу ли я использовать мой собственный якорь, как функция ниже?

<computed-bucket ge="P0D" anchor="myAnchor.xqy" name="future">Future</computed-bucket> 
+0

Можете ли вы подробнее рассказать о том, что вы хотели бы сделать? Ваш xml-фрагмент не содержит дат, и что должен делать myAnchor.xqy? – grtjn

+0

myAnchor.xqy должен определить мою собственную стратегию группировки, например, поставить «Азию» и «НАМ» в одну фасетную группу. –

ответ

0

Вычисляемые ведра не являются опцией для строки v alues. И если ведра слишком жесткие, подумайте о написании пользовательского аспекта. Вот пример одной, что позволяет группировать шаблоны значений:

https://github.com/grtjn/ml-constraints/blob/master/grouping-constraint.xqy

НТН!

+0

Мой коллаборатор реализует его с помощью пользовательской грани. –

4

Вы можете использовать ведро вместо вычисленного-ведро для диапазона, который вы определяете:

http://docs.marklogic.com/guide/search-dev/appendixa#id_80046

, который будет что-то вроде:

<bucket name="N" lt="O" ge="N">Terms that start with N</bucket> 

Надеясь, что помогает,

+0

Этот способ может быть несколько жестким. что если когда-нибудь я захочу поставить «Азию» и «НАМ» в одну фасетную группу? Причина, по которой я решил использовать вычисляемый ведро, - это обеспечить большую гибкость. –

+0

Я не уверен, что понимаю беспокойство. Вы можете менять ведра в любое время. – ehennum