在 MarkLogic 中,我尝试了以下代码。但是,我希望有一个程序可以按年、月、日排序,然后限制结果。下面的代码限制了结果,然后按 YY、MM、DD 排序,返回了错误的结果。
xquery version "1.0-ml";
declare variable $query :=
cts:and-query
((
cts:element-word-query(xs:QName("journal-title"),"MyJournal"),
cts:element-word-query(xs:QName("subject"),"MyNews")));
declare function local:do-query(){
element xml {
for $i in cts:uris( (), ("limit=50"), $query)
let $item := doc($i)
order by ($item//pub-date/year) descending, ($item//pub-date/month) descending, ($item//pub-date/day) descending
return
element article {
element journal-title { $item//journal-title },
element sub {$item//article-meta//article-categories//subj-group[@subj-group-type="content-type"]//subject},
element title { $item//article-title },
element byline { $item//contrib/string-name },
element body { $item//body },
element images {
for $graphic in $item//body//graphic
return element image { ($graphic//@*[name()="xlink:href"]/data()) }},
element year {$item//pub-date/year/string()},
element month {$item//pub-date/month/string()},
element day {$item//pub-date/day/string()},
element doi { $item//article-id[@pub-id-type="doi"]/text() },
element doitrim {substring-after($item//article-id[@pub-id-type="doi"]/text(),"/")}
}
}
};
local:do-query()
提前致谢。
最佳答案
您的代码正在选择前 50 个与查询条件匹配的 URI,加载这些文档并对它们进行排序。
听起来好像您想搜索符合查询条件的文档,结果按年、月、日值排序,然后从排序后的集合中选择前 50 个。
您可以使用 cts:search()搜索符合查询条件的文档并使用 cts:index-order() 序列使用 cts:element-reference() 返回按年、月、日排序的结果,然后使用谓词来限制这些排序文档的前 50 个。
xquery version "1.0-ml";
declare variable $query :=
cts:and-query((
cts:element-word-query(xs:QName("journal-title"),"MyJournal"),
cts:element-word-query(xs:QName("subject"),"MyNews")
));
declare function local:do-query() {
element xml {
for $item in cts:search(fn:doc(), $query,
("unfiltered",
(
cts:index-order(cts:element-reference(xs:QName("year")), "descending"),
cts:index-order(cts:element-reference(xs:QName("month")), "descending"),
cts:index-order(cts:element-reference(xs:QName("day")), "descending")
)
)
)[1 to 50]
return
element article {
base-uri(),
element journal-title { $item//journal-title },
element sub {$item//article-meta//article-categories//subj-group[@subj-group-type="content-type"]//subject},
element title { $item//article-title },
element byline { $item//contrib/string-name },
element body { $item//body },
element images {
for $graphic in $item//body//graphic
return element image { ($graphic//@*[name()="xlink:href"]/data()) }},
element year {$item//pub-date/year/string()},
element month {$item//pub-date/month/string()},
element day {$item//pub-date/day/string()},
element doi { $item//article-id[@pub-id-type="doi"]/text() },
element doitrim {substring-after($item//article-id[@pub-id-type="doi"]/text(),"/")}
}
}
};
local:do-query()
关于xml - Marklogic/XQuery - 要排序的结果然后限制为最近的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48673055/
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
我有这样的哈希trial_hash={"key1"=>1000,"key2"=>34,"key3"=>500,"key4"=>500,"key5"=>500,"key6"=>500}我按值降序排列:my_hash=trial_hash.sort_by{|k,v|v}.reverse我现在是这样理解的:[["key1",1000],["key4",500],["key5",500],["key6",500],["key3",500],["key2",34]]但我希望当值相同时按键的升序排序。我该怎么做?例如:上面的散列将以这种方式排序:[["key1",1000],["key3",500
导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri
我需要用任何语言编写一个算法,根据3个因素对数组进行排序。我以度假村为例(如Hipmunk)。假设我想去度假。我想要最便宜的地方、最好的评论和最多的景点。但是,显然我找不到在所有3个中都排名第一的方法。Example(assumingthereare20importantattractions):ResortA:$150/night...98/100infavorablereviews...18of20attractionsResortB:$99/night...85/100infavorablereviews...12of20attractionsResortC:$120/night
我正在尝试按Rails相关模型中的字段进行排序。我研究的所有解决方案都没有解决如果相关模型被另一个参数过滤?元素模型classItem相关模型:classPriority我正在使用where子句检索项目:@items=Item.where('company_id=?andapproved=?',@company.id,true).all我需要按相关表格中的“位置”列进行排序。问题在于,在优先级模型中,一个项目可能会被多家公司列出。因此,这些职位取决于他们拥有的company_id。当我显示项目时,它是针对一个公司的,按公司内的职位排序。完成此任务的正确方法是什么?感谢您的帮助。PS-我
我正在构建一个小部件来显示奥运会的奖牌数。我有一个“国家”对象的集合,其中每个对象都有一个“名称”属性,以及奖牌计数的“金”、“银”、“铜”。列表应该排序:1.首先是奖牌总数2.如果奖牌相同,按类型分割(金>银>铜,即2金>1金+1银)3.如果奖牌和类型相同,则按字母顺序子排序我正在用ruby做这件事,但我想语言并不重要。我确实找到了一个解决方案,但如果感觉必须有更优雅的方法来实现它。这是我做的:使用加权奖牌总数创建一个虚拟属性。因此,如果他们有2个金牌和1个银牌,加权总数将为“3.020100”。1金1银1铜为“3.010101”由于我们希望将奖牌数排序为最高的,因此列表按降序排
例如,假设我有一个名为Products的模型,并且在ProductsController中,我有以下代码用于product_listView以显示已排序的产品。@products=Product.order(params[:order_by])让我们想象一下,在product_listView中,用户可以使用下拉菜单按价格、评级、重量等进行排序。数据库中的产品不会经常更改。我很难理解的是,每次用户选择新的order_by过滤器时,rails是否必须查询,或者rails是否能够以某种方式缓存事件记录以在服务器端重新排序?有没有一种方法可以编写它,以便在用户排序时rails不会重新查询结果
我目前有一个reddit克隆类型的网站。我正在尝试根据我的用户之前喜欢的帖子推荐帖子。看起来K最近邻或k均值是执行此操作的最佳方法。我似乎无法理解如何实际实现它。我看过一些数学公式(例如k表示维基百科页面),但它们对我来说并没有真正意义。有人可以推荐一些伪代码,或者可以查看的地方,以便我更好地了解如何执行此操作吗? 最佳答案 K最近邻(又名KNN)是一种分类算法。基本上,您采用包含N个项目的训练组并对它们进行分类。如何对它们进行分类完全取决于您的数据,以及您认为该数据的重要分类特征是什么。在您的示例中,这可能是帖子类别、谁发布了该项
我有一个对象如下:[{:id=>2,:fname=>"Ron",:lname=>"XXXXX",:photo=>"XXX"},{:id=>3,:fname=>"Dain",:lname=>"XXXX",:photo=>"XXXXXXX"},{:id=>1,:fname=>"Bob",:lname=>"XXXXXX",:photo=>"XXXX"}]我想按fname排序,不区分大小写,所以它会导致编号:1,3,2我该如何排序?我正在尝试:@people.sort!{|x,y|y[:fname]x[:fname]}但这没有任何效果。 最佳答案
有人可以告诉我如何根据自定义字符串对嵌套数组进行排序吗?比如有没有办法排序:[['Red','Blue'],['Green','Orange'],['Purple','Yellow']]“橙色”、“黄色”,然后是“蓝色”?最终结果如下所示:[['Green','Orange'],['Purple','Yellow'],['Red','Blue']]它不是按字母顺序排序的。我很想知道我是否可以定义要排序的值以实现上述目标。 最佳答案 sort_by对于这种排序总是非常方便:a=[['Red','Blue'],['Green','Ora