繁体   English   中英

使用Nest进行Elasticsearch

[英]Using Nest for elasticsearch

嗨,我将Nest用作Elastisearch的接口。 一切正常,我只能做一件事。 这就是重点。

我有以下“模特”

[ElasticType(Name = "WebResource", SearchAnalyzer = "full_name", IndexAnalyzer = "partial_name", DateDetection = true, NumericDetection = true)]
public class WebResource
{
    public string _id;
    [ElasticProperty(Type = FieldType.integer_type, Index = FieldIndexOption.not_analyzed)]
    public string Id
    {
        get
        {
            if (_id == null || _id == Guid.Empty.ToString())
            {
                _id = Guid.NewGuid().ToString();
            }
            return _id;
        }
        set
        {
            _id = value;
        }
    }

    [ElasticProperty(Type = FieldType.string_type, Index = FieldIndexOption.analyzed)]
    public string Keywords { get; set; }

    [ElasticProperty(Type = FieldType.string_type, Index = FieldIndexOption.analyzed)]
    public string Content { get; set; }
}

我有一个索引,搜索返回文档,但突出显示始终为零

Client.Search<WebResource>(g => g.Query(k => k.Term(l => l.Content, searchText) || k.Term(l => l.Keywords, searchText)).Highlight(k => k.OnFields(p => p.OnField("Keywords"), p => p.OnField("Content")).FragmentSize(200)));

其中searchText是searchtext。 任何帮助表示赞赏。

亲切的问候

原来这个问题与NEST(elasticsearch)在多个领域的突出显示有关

我的解决方案是将其分解为更具可读性的形式

Action<HighlightFieldDescriptor<WebResource>> actWeb = (t) => t.OnField(g => g.Content);
Action<HighlightFieldDescriptor<WebResource>> actKey = (t) => t.OnField(g => g.Keywords);

Action<HighlightDescriptor<WebResource>> higDesc = t => t.OnFields(actWeb,actKey);

SearchDescriptor<WebResource> searchdesc = new SearchDescriptor<WebResource>();

searchdesc.Query( t => t.Term( k => k.Content,searchText) || t.Term( l =>l.Keywords,searchText));                
searchdesc.Highlight(higDesc);

 var resp = Client.Search(searchdesc);

事实证明,这是组合字段的方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM