gpt4 book ai didi

java - 卢塞恩 : how to sort by document count in group while doing grouping search

转载 作者:行者123 更新时间:2023-12-01 04:24:33 25 4
gpt4 key购买 nike

我有类似的文件

{id:1, name:foo, from: China}
{id:2, name:bar, from: USA}
{id:3, name:baz, from: Japan}
{id:4, name:foo, from: China}

然后我按 from 字段对这些文档进行分组。

And I want to get the top N country from which users come from.

我不知道如何按每个组的文档数量排序。或者有更好的方法来做到这一点。

最佳答案

我不认为使用 Lucene 是实现您想要的效果的最佳方式,但您可以迭代结果并收集 map 中每个国家/地区的计数:

final Map<String, Integer> country2count = new HashMap<String, Integer>();
for (final ScoreDoc hit : hits) {
final int docId = hit.doc;
if (!reader.isDeleted(docId)) {
// Get the document from docId
final Document document = searcher.doc(docId);
// Get the country
final String country = document.get("from");

if(country2count.containsKey(country)){
int prevCount = country2count.get(country);
country2count.put(country, ++prevCount);
}else{
country2count.put(country, 1);
}
}
}

我建议您不要使用索引,而是使用简单的日志,然后使用以下方法获取用户数量最多的国家/地区:

cat id_name_from.log | awk '{print $3}' |排序 -k 3 | uniq-c|排序-nrk 1

示例:日志文件保存为“id\t name\t from”:

1   foo China
2 foo Usa
3 bar China
4 foo China
5 foo China
6 foo Usa
7 bar China
8 foo China
9 foo Usa

脚本:

cat log | awk '{print $3}' | sort | uniq -c | sort -nrk 1

结果:

6 China
3 Usa

关于java - 卢塞恩 : how to sort by document count in group while doing grouping search,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18626607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com