我有一个应用程序,它将为它处理的每个搜索查询生成一个日志条目(来自Solr),这样我就可以为我的搜索引擎计算某些统计信息。例如,没有结果的查询数,平均命中数等等。现在我想知道如何最好地执行此分析。负荷估计为每天高达数万次搜索,并在一周内生成统计数据。换句话说,我正在寻找计算最多十万个XML文件的统计数据的最佳方法。
这个过程将由Apache Camel控制,我现在认为XQuery是解决这个问题的最佳选择。由于我还在努力建立模式,所以我无法进行任何真实世界的测试,所以我想在深入研究之前就最佳方法获取一些意见。有些问题:
答案 0 :(得分:3)
XSLT 2.0或XQuery 1.0原则上都可以处理这个问题,但性能取决于实际的卷和查询的复杂性。通常,(我知道这听起来很平庸)XSLT在转换方面更胜一筹(从每个源文档生成新文档),而XQuery在查询方面更胜一筹(从每个源文档中提取少量信息)。将所有小文档合并为一个大文档没有特别的意义。我还要说,将它们放入数据库并没有多大意义,除非(a)你真的需要提供交叉索引,或者(b)你将在一段时间内重复使用这些文件。
答案 1 :(得分:2)
问题的相应顺序答案:
fn:collection()
函数答案 2 :(得分:0)
他们 是否采用XML格式?我非常强烈地探索将这些统计信息加载到某种数据库中。如果信息的字段/类别是常规的,则为普通数据库;如果不是,则为无模式NoSQL数据库之一。这将使得推导统计数据变得更加容易。
如果已记录的标准可能发生变化,您甚至可以使用具体模式或动态字段将其加载回Solr(单独的核心)。