当前位置: 首页 > 面试题库 >

ElasticSearch:突出显示词组查询中的每个单词

杜晨朗
2023-03-14
问题内容

如何获得Elastic Search仅突出显示导致文档退回的单词?

我有以下索引

{
  "mappings": {
    "document": {
      "properties": {
        "content": {
          "type": "string",
          "fields": {
            "english": {
              "type": "string",
              "analyzer": "english"
            }
          }
        }
      }
    }
  }
}

假设我已建立索引

核能是利用核反应释放核能[5]来产生热量,然后最频繁地将其用于汽轮机中以在核电站中发电。该术语包括核裂变,核衰变和核聚变。目前,周期表the系元素的元素的核裂变在人类直接服务中产生了绝大多数核能,其核衰变过程主要以地热能和放射性同位素热电发生器的形式出现在利基用途中。弥补其余的。

并搜索“核元素”〜2

我只希望突出显示“元素的核裂变”或“元素的核裂变”的一部分,但是现在强调每次出现核。

这是我的查询,如果有帮助:

{
  "fields": [
  ],
  "query": {
    "query_string": {
      "query": "\"nuclear elements\"~2",
      "fields": [
        "content.english"
      ]
    }
  },
  "highlight": {
    "pre_tags": [
      "<em class='h'>"
    ],
    "post_tags": [
      "</em>"
    ],
    "fragment_size": 500,
    "number_of_fragments": 20,
    "fields": {
      "content.english": {}
    }
  }
}

问题答案:

ES
2.1中有一个突出的错误,该错误是由于此更改引起的。此请求请求已解决此问题。

根据ES开发人员的说法

这是我在#13239中引入的一个错误,当时我认为差异是由于Lucene的变化引起的:当跨度提取成功后,也会调用extractUnknownQuery,因此,如果尚未跨度提取,我们应该只使用Weight.extractTerms。

它可以在2.0之前的较旧版本中使用,并且可以在将来的版本中按预期工作。



 类似资料:
  • 问题内容: 我已经使用n- gram标记器在elasticsearch中提出了自动建议。现在,我想在自动建议列表中突出显示用户输入的字符序列。为此,我使用了elasticsearch中可用的荧光笔,我的代码如下所示,但是在输出中,完整的术语被突出显示了我要去哪里了。 结果是 映射 设定 如何突出显示软件而不是软件开发。 问题答案: 在这种情况下,应使用ngram标记器而不是ngram过滤器突出显示

  • 问题内容: 我必须强调一个单词中所有出现的单词JEditorPane。为此,我使用以下代码: 但是,如何给出单词索引的位置呢? 我正在从文件中读取内容,但是它也在读取HTML标签,并且正在干扰单词索引。 问题答案: 基本上,您应该能够遍历文档以寻找所需的匹配项 … 这将遍历整个文档并突出显示所有匹配项。这也是区分大小写的匹配;)

  • 问题内容: 我基本上需要突出显示文本块中的特定单词。例如,假装我想在文本中突出显示“ dolor”一词: 我如何将以上内容转换为如下形式: jQuery有可能吗? 编辑 :正如塞巴斯蒂安指出的那样,如果没有jQuery,这是完全有可能的但我希望可以有一种特殊的jQuery方法,该方法可以让您对文本本身进行选择。我已经在该站点上大量使用了jQuery,因此将所有内容都包裹在jQuery中可能会使事情

  • 我是RichTextFX新手,需要一些帮助。我想使用StyleClassedTextArea(见https://github.com/FXMisc/RichTextFX)。 我的简单java代码: 但是,如图所示,没有突出显示任何内容。有人知道我如何用红色(或我做错了什么)渲染一定范围内的文本吗?

  • 问题内容: 根据Elasticsearch clear cache docs ,您可以清除字段的缓存,但是是否可以为单个查询词清除缓存? 为了防止将来出现此问题,我宁愿不要对“空”查询进行缓存,或者不经常更新缓存。是否可以在该粒度级别上为缓存设置规则? 问题答案: 不可以,您不能指定该级别的粒度。 您可以覆盖是针对默认启用缓存过滤器:http://www.elasticsearch.org/gui

  • 问题内容: 我想建立一个样本,以从与我的应用程序过滤器匹配的单词中删除突出显示的内容。因此,我将自己基于以下示例: 此示例的作用是删除文本区域的所有突出显示。例如,如果我选择了三个单词,并且取消选中其中一个,则所有过滤器都将被删除,而我只想删除未选中单词的突出显示。是否有一种简单的方法来检查哪个单词与过滤器匹配?还是我需要手动进行?直到现在,我发现我的研究没有成功 提前致谢 最后编辑: 基于@ca