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

Elasticsearch-片段在文档中的位置

蒋烨然
2023-03-14
问题内容

我正在执行类似下面的短语查询。它返回给我按相关性排序的突出显示的片段。自然,我希望用户单击一个片段,然后将文档滚动到相应的位置。但是,我在Elasticsearch中看不到任何方法来找出片段在原始文档中的位置。有任何想法吗?

GET documents/doc/_search
{
   "query": {
        "match_phrase": {
            "text": {
                "query": "hello world",
                "slop":  10
            }
        }
    }, 
    "highlight" : {
        "order" : "score",
        "fields" : {
            "text" : {"fragment_size" : 100, "number_of_fragments" : 10}
        }
    }
}

问题答案:

在此期间,我们找不到合适的解决方案,并遭到了以下黑客攻击(对我们而言非常有效):在索引之前,我们用“ [index]”注释文本中的每个单词,以便“
一些要索引的文本 ”变成“ some [00]文本[01]到[02]索引[03]
”。然后,我们使用char过滤器,如下所示。当突出显示返回时,我们从突出显示文本中解析出单词位置。

"settings": {
    "analysis": {
      "char_filter": {
        "remove_annotation": {
          "type": "pattern_replace",
          "pattern": "\\[[0-9]+\\]",
          "replacement": ""
        }
      },
      "analyzer": {
        "annotated_english_language_analyzer": {
          "type": "custom",
          "char_filter": [
            "remove_annotation"
          ],
          ...

请注意,注释索引应填充到log10(text_length)+1数字,以使找到的突出显示(删除注释后)的宽度不取决于发现的位置(从开始到结束)。



 类似资料:
  • 问题内容: 我需要在所有索引到Elasticsearch的文档中删除一个字段。我该怎么做。任何删除查询都可以帮助我实现这一点。 问题答案: @backtrack所说的是对的,但是在Elasticsearch中有一种非常方便的方法。Elasticsearch将抽象出删除的内部复杂性。您需要使用更新API来实现- 您可以在此处找到更多文档。 注意:从Elastic Search 6开始,您需要包括一个

  • 在elasticsearch文档中有多级字段好吗? 如果是,如何搜索带有嵌套字段的文档 我没有看到关于elasticsearch docshttps的文档://www.elastic.co/guide/en/elasticsearch/reference/current/index.html 多级I表示嵌套字段

  • 我想从ElasticSearch的结果文档中排除一个字段。我浏览了ElasticSearch.org的这个文档http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-fields.html但当我尝试时,这不起作用。我在SO上看到了同样的问题。有没有办法在Elasticsearch查询中

  • 我正在向elasticsearch发送查询,它会响应其文档中字段的未知顺序。我如何修复elsasticsearch返回文档中字段的顺序?我的意思是,我正在发送这个查询: 当它回应时,它给了我一些不正常的东西。我最后想将其转换为csv,并修复csv标题。有什么方法可以让我得到像doc1:{“field1”,“field2”,“field3”,“field14”}doc2:{“field1”,“fie

  • Elasticsearch 是目前流行的大数据处理框架之一,全文搜索引擎 Elasticsearch PHP 中文文档。

  • 问题内容: 我正在编写资产管理应用程序。它允许用户通过向资产添加html控件(例如文本字段,选择菜单等)来存储任意资产属性。然后,该属性的JSON表示成为存储在beddb中的资产JSON文档的一部分。资产在ouchdb中具有以下结构: 我不确定将属性放入数组是否是允许基于属性值搜索资产的最佳方法。将属性直接附加到资产作为属性会更好吗?我正在用Elasticsearch做实验。如果我尝试按原样存储文