我试图从给定的一组文档中获取总词频和文档计数,但是弹性搜索中的 _termvectors 从索引中的所有文档中返回 ttf 和 doc_count。有什么方法可以让我指定文档列表(文档 ID),以便结果仅基于这些文档。
以下是获取总词频的文档详细信息和查询:
索引详情:
PUT /twitter
{ "mappings": {
"tweets": {
"properties": {
"name": {
"type": "text",
"analyzer":"english"
}
}
}
},
"settings" : {
"index" : {
"number_of_shards" : 1,
"number_of_replicas" : 0
}
}
}
文件详情:
PUT /twitter/tweets/1
{
"name":"Hello bar"
}
PUT /twitter/tweets/2
{
"name":"Hello foo"
}
PUT /twitter/tweets/3
{
"name":"Hello foo bar"
}
它将创建三个 ID 为 1、2 和 3 的文档。现在假设 ID 为 1 和 2 的推文属于 user1,而 3 属于另一个用户,我想获取 user1 的术语向量。
查询以获得此结果:
GET /twitter/tweets/_mtermvectors
{
"ids" : ["1", "2"],
"parameters": {
"fields": ["name"],
"term_statistics": true,
"offsets":false,
"payloads":false,
"positions":false
}
}
回复:
{
"docs": [
{
"_index": "twitter",
"_type": "tweets",
"_id": "1",
"_version": 1,
"found": true,
"took": 1,
"term_vectors": {
"name": {
"field_statistics": {
"sum_doc_freq": 7,
"doc_count": 3,
"sum_ttf": 7
},
"terms": {
"bar": {
"doc_freq": 2,
"ttf": 2,
"term_freq": 1
},
"hello": {
"doc_freq": 3,
"ttf": 3,
"term_freq": 1
}
}
}
}
},
{
"_index": "twitter",
"_type": "tweets",
"_id": "2",
"_version": 1,
"found": true,
"took": 1,
"term_vectors": {
"name": {
"field_statistics": {
"sum_doc_freq": 7,
"doc_count": 3,
"sum_ttf": 7
},
"terms": {
"foo": {
"doc_freq": 2,
"ttf": 2,
"term_freq": 1
},
"hello": {
"doc_freq": 3,
"ttf": 3,
"term_freq": 1
}
}
}
}
}
]
}
在这里我们可以看到hello
有 doc_count 3 和 ttf 3。我怎样才能让它只考虑具有给定 ID 的文档。
我正在考虑的一种方法是为不同的用户创建不同的索引。但我不确定这种方法是否正确。通过这种方法,指数将随着用户的增加而增加。或者可以有其他解决方案吗?