solr - 如何获取SOLR中每个文档的总字数?

标签 solr

我想从我在 Solr 中索引的文本文档中检索一些摘要统计信息。特别是每个文档的字数。

例如,我索引了以下三个文档:

{
 "id":"1",
 "text":["This is the text in document 1"]},
{
 "id":"2",
 "text":["some text in document 2"]},
{
 "id":"3",
 "text":["and document 3"]}

我想获取每个文档的总字数:

"1",7,
"2",5,
"3",3,

我可以使用什么查询来获得这样的结果?

我是 Solr 的新手,我知道我可以使用构面来获取所有文档中单个单词的计数,例如:
http://localhost:8983/solr/corename/select?q=*&facet=true&facet.field=text&facet.mincount=1
但我不清楚如何获取每个文档的总字数。

感谢您的帮助!

最佳答案

如果您对 id 进行分面搜索,并对文本进行内部分面搜索,则内部分面计数将给出该文档中具有该 id 的单词数。但文本字段类型必须是 text_general 或等效的类型(标记化)。

如果您只想计算每个文档 ID 的“不同”单词数,实际上要容易得多:

{
"query": "*:*",
"facet": {
    "document": {
        "type": "terms",
        "field": "id",
        "facet": {
            "wordCount": "unique(message)"
        }
    }
}
}

给出每个文档的不同字数。以下给出了每个文档的所有单词和所有计数,但您可以将它们相加以获得总金额(这也是一个昂贵的调用)

{
"query": "*:*",
"facet": {
    "document": {
        "type": "terms",
        "field": "id",
        "facet": {
            "wordCount": {
                "type": "terms",
                "field": "message",
                "limit": -1
            }
        }
    }
}
}

@MatsLindth 的评论也值得考虑。 Solr 和您可能无法就什么是“单词”达成一致。 Tokenizer 在一定程度上是可配置的,但根据您的需求,它可能不是很容易。

关于solr - 如何获取SOLR中每个文档的总字数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63668111/

相关文章:

solr - Solr DIH 可以进行原子更新吗?`

solr - 使用词干提取时如何基于 rawquerystring 提升 solr 结果

solr - Lucene 分析器链 : ShingleFilter without filler tokens

python - 连接到在本地主机上运行的 solr 服务器

search - 搜索工具 - Solr、Bing 和 Google 之间的区别?

linux - 如何使用 cURL 查询时间戳超过 30 天的所有记录?

php - Solr 命令不返回 json 输出

Solr 索引不可见

python - 如何使用Python将日期字符串转换为Solr日期格式?

solr - 通过 SolrCell 没有来自 Tika 的元数据的文本内容