在C#NEST中选择Lucene / Elastic Search荧光笔

时间:2014-03-08 00:15:16

标签: lucene elasticsearch highlighting nest

我还没有在C#NEST中找到此属性的位置或是否已公开。例如,在弹性搜索中,您可以按如下方式指定普通荧光笔:

 {
  "size": 500,
  "query": {
    "query_string": {
      "query": "\"C S M\"",
      "fields": [
        "contentsStem"
      ],
      "default_operator": "and"
    }
  },
  "highlight": {
    "pre_tags": [
      "<em>"
    ],
    "post_tags": [
      "</em>"
    ],
    "fields": {
      "contentsStem": { "type" : "plain" }
    }
  },
  "fields": [
    "nameStem"
  ]
}

通知类型:plain被指定为contesntsStem的属性。在NEST中,我有以下代码:

        if (this.HighlightFields.Any())
        {
            var highlightFieldsAugmented = this.HighlightFields.Select(f => UnanalyzedFields.Contains(f) ? f : f + this.AnalyzerMode).ToList();

            var highlightFieldsActions = highlightFieldsAugmented
                .Select(field => new Action<HighlightFieldDescriptor<ElasticSearchHit>>(descriptor => descriptor.OnField(field)))
                .ToArray();

            searchdescriptor.Highlight(h => h.PreTags(this.HighlightPretag)
                .PostTags(this.HighlightPosttag)
                .OnFields(highlightFieldsActions)
                );
        }

 var hits = ElasticSearchEngine.ElasticClientSingleInstance.Search(searchdescriptor);

此代码默认使用FV荧光笔,但我没有找到将其更改为普通荧光笔的方法。有没有办法在这种情况下使用普通荧光笔来形成C#中的NEST?

谢谢。

1 个答案:

答案 0 :(得分:0)

这是在NEST 0.12.0中未映射的,即将推出的1.0版本允许你这样做:

var highlightFieldsActions = highlightFieldsAugmented
    .Select(field => new Action<HighlightFieldDescriptor<ElasticSearchHit>>(
        descriptor => descriptor
            .OnField(field)
            .Type("plain")
        )
    )
    .ToArray();