【发布时间】:2014-02-11 17:30:11
【问题描述】:
我正在开发一个用 XQuery 编写的现有 Marklogic 应用程序。我们目前有一个存储桶限制,允许在定义的日期范围设置分面,如下所示:
<constraint name="date" xmlns="http://marklogic.com/appservices/search">
<range type="xs:gYear">
<element ns="http://digital.library.ptsem.edu/ia" name="date"/>
<bucket name="any-1800" lt="1801">–1800</bucket>
<bucket name="1801-1825" ge="1801" lt="1826">1801–1825</bucket>
<bucket name="1826-1850" ge="1826" lt="1851">1826–1850</bucket>
<bucket name="1851-1875" ge="1851" lt="1876">1851–1875</bucket>
<bucket name="1876-1900" ge="1876" lt="1901">1876–1900</bucket>
<bucket name="1901-1925" ge="1901" lt="1926">1901–1925</bucket>
<bucket name="1926-any" ge="1926">1926–</bucket>
</range>
</constraint>
用户目前可以通过点击 UI 中的相应方面来选择这些日期范围。
我想做的是允许用户在表单中输入开始日期和结束日期,以便按自定义日期范围进行搜索。例如,他们可以在文本表单中输入 1950 - 1970 并搜索此范围。我认为这些自定义范围可能可以通过从搜索选项中删除当前日期桶约束来实现,而是使用范围约束,这样我们就可以在查询文本中执行类似 (date-start:1800 AND date-end:1900) 的操作.另一种选择是根据用户输入的年份即时设置存储桶约束。
我真的不知道从哪里开始或最好的方法是什么。有没有人做过类似的事情或对如何最好地实现这一点提出建议?
谢谢!
【问题讨论】:
-
这篇文章(及其 cmets)应该可以帮助您入门:blog.davidcassel.net/2012/06/…
标签: constraints xquery marklogic faceted-search