如何解决如何在 MarkLogic 中使用 JavaScript 计算来自同一集合中满足两个搜索条件的文档的出现次数?
在 MarkLogic(在查询控制台中首选)中,使用 JavaScript,我想从 package webscrape;
/*
* To change this license header,choose License Headers in Project Properties.
* To change this template file,choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author glass
*/
public class HackerNewsItem {
private String title;
private String url;
private String author;
private int score;
private int position;
private int id;
public HackerNewsItem(String title,String url,String author,int score,int position,int id)
{
this.title = title;
this.url = url;
this.author = author;
this.score = score;
this.position =position;
this.id = id;
}
}
从 {{1 }} 到
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/xerces/xni/XNIException
at com.gargoylesoftware.htmlunit.DefaultPageCreator.<clinit>(DefaultPageCreator.java:91)
at com.gargoylesoftware.htmlunit.WebClient.<init>(WebClient.java:187)
at com.gargoylesoftware.htmlunit.WebClient.<init>(WebClient.java:269)
at com.gargoylesoftware.htmlunit.WebClient.<init>(WebClient.java:259)
at com.gargoylesoftware.htmlunit.WebClient.<init>(WebClient.java:251)
at webscrape.JsoupTutorial.<init>(JsoupTutorial.java:31)
at webscrape.JsoupTutorial$2.run(JsoupTutorial.java:190)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventdispatchThread.pumpOneEventForFilters(EventdispatchThread.java:203)
at java.desktop/java.awt.EventdispatchThread.pumpEventsForFilter(EventdispatchThread.java:124)
at java.desktop/java.awt.EventdispatchThread.pumpEventsForHierarchy(EventdispatchThread.java:113)
at java.desktop/java.awt.EventdispatchThread.pumpEvents(EventdispatchThread.java:109)
at java.desktop/java.awt.EventdispatchThread.pumpEvents(EventdispatchThread.java:101)
at java.desktop/java.awt.EventdispatchThread.run(EventdispatchThread.java:90)
Caused by: java.lang.classNotFoundException: org.apache.xerces.xni.XNIException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
at java.base/java.lang.classLoader.loadClass(ClassLoader.java:519)
... 20 more
BUILD SUCCESSFUL (total time: 1 second)
在 2020 年到 2021 年之间。
示例文档结构(集合 = 'members'):
memberIDs
对于这个例子,答案是“2”。
我在“Indexing in MarkLogic”下的文档中找到了一个可能的解决方案,称为“shotgun 查询”。
我也在这里Search Documents from two collections in MarkLogic发现了一个类似的问题。但是,我不知道 XQuery,所以我不知道如何使它适应我的情况。
我的第一个想法是分别执行这两个查询,填充两个数组并确定哪些 ID 显示在两个数组中。但是,由于较大的查询会产生超过 20 万个文档,因此计算时间仍然太长。
我可以通过使用子序列来克服这个障碍。 每次检索少量 URI,然后遍历 URI,从文档中检索我需要的值,并将它们添加到数组中。 可悲的是,我的方法并没有真正奏效。此外,我正在创建的副产品本身可能是一个问题。 二十万个文档意味着我必须存储在 40 万个字符串的数组中。 到目前为止,我有这个,它没有中断,但我在 15 秒后停止运行。
secondaryIDs
在 sql 中,我可能会在两个查询结果之间进行 INNER JOIN 来解决这个问题。 我可以使用 JavaScript API 在 MarkLogic 中做到这一点吗?
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。