首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在弹性搜索巢中使用MultiTermVectors函数

如何在弹性搜索巢中使用MultiTermVectors函数
EN

Stack Overflow用户
提问于 2017-08-09 23:39:25
回答 2查看 273关注 0票数 0

我在elasticsearch中索引了许多xml文件,以索引新闻并键入路透社。然后我可以用

代码语言:javascript
复制
var termvecResponse = Client.TermVectors<reuters>(t => t.Index("news").Id(1).TermStatistics().Fields(f => f.Body));

以获得第一个文档的术语向量。我的问题是我如何使用这个电话?

代码语言:javascript
复制
Client.MultiTermVectors<reuters>

我试过了

代码语言:javascript
复制
var idRange = Enumerable.Range(1, 10);
        
        var tvecR = Client.MultiTermVectors(new MultiTermVectorsRequest(typeof(reuters))
        {
            Documents = idRange.Select(n => new MultiTermVectorOperation<reuters>(n)
            {
                Type=typeof(reuters),
                FieldStatistics = false,
                Payloads = false,
                TermStatistics = true,
                Positions = false,
                Offsets = false
            })
        });

它返回空的术语向量,响应对象说POST调用是on /news/_mtermvectors,而不是/news/reuters/_mtermvectors,有什么想法吗?谢谢你的帮助。

低级别解决方案:如果有人需要,请像下面这样使用低级调用。

代码语言:javascript
复制
string sbRequestBody = "{\"ids\":[\"1\", \"2\"],\"parameters\":{\"fields\": [\"body\"],\"term_statistics\":true}}";         
var termvecResponse =Client.LowLevel.Mtermvectors<MultiTermVectorsResponse>("news", "reuters", sbRequestBody);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-12 08:44:40

在多项向量请求中向Documents属性提供的文档不像单个调用那样包含用于术语统计的字段。如果所有文档都针对相同的字段,则可以使用

代码语言:javascript
复制
var tvecR = client.MultiTermVectors(new MultiTermVectorsRequest("news", typeof(reuters))
{
    Fields = Infer.Fields<reuters>(f => f.Body), // all docs will use these fields
    Documents = idRange.Select(n => new MultiTermVectorOperation<reuters>(n)
    {
        TermStatistics = true
    })
});

这里的请求将违背/news/reuters/_mtermvectors?fields=summary

票数 1
EN

Stack Overflow用户

发布于 2017-08-13 16:35:46

低级别解决方案:如果有人需要,请像下面这样使用低级调用。

代码语言:javascript
复制
string sbRequestBody = "{\"ids\":[\"1\", \"2\"],\"parameters\":{\"fields\": [\"body\"],\"term_statistics\":true}}";         
var termvecResponse =Client.LowLevel.Mtermvectors<MultiTermVectorsResponse>("news", "reuters", sbRequestBody);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45602236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档