elasticsearch,multilingual,Lucene,elasticsearch,Multilingual" /> elasticsearch,multilingual,Lucene,elasticsearch,Multilingual" />

lucene/elasticsearch中子文档的特定分析器

lucene/elasticsearch中子文档的特定分析器,lucene,elasticsearch,multilingual,Lucene,elasticsearch,Multilingual,在阅读了文档、测试并阅读了stackoverflow上的许多其他问题之后: 我们的文档有多种语言的标题和描述。还有一些标记被翻译成相同的语言。系统中可能有多达30-40种不同的语言,但单个文档可能只有3或4种翻译 这是计划的文档结构: { "luck": { "id": 10018, "pub": 0, "pr": 100002, "loc": { "lat": 42.7, "lon": 84.2 }, "t": [

在阅读了文档、测试并阅读了stackoverflow上的许多其他问题之后:

我们的文档有多种语言的标题和描述。还有一些标记被翻译成相同的语言。系统中可能有多达30-40种不同的语言,但单个文档可能只有3或4种翻译

这是计划的文档结构:

{
 "luck": {
    "id": 10018,
    "pub": 0,
    "pr": 100002,
    "loc": {
      "lat": 42.7,
      "lon": 84.2
    },
    "t": [
      {
    "lang": "en-analyzer",
    "title": "Forest",
    "desc": "A lot of trees.",
    "tags": [
      "Wood",
      "Nature",
      "Green Mouvement"
    ]
      },
      {
    "lang": "fr-analyzer",
    "title": "Forêt",
    "desc": "A grand nombre d'arbre.",
    "tags": [
      "Bois",
      "Nature",
      "Mouvement Vert"
    ]
      }
    ],
    "dates": [
      "2014-01-01T20:00",
      "2014-06-06T20:00",
      "2014-08-08T20:00"
    ]
  }
}
可能的查询是“arbre”或“wood”或“forest”或“nature”,并结合日期和地理距离过滤器,此外,标签数组上会有一些方面(显然包括计数)

我们可以生成最适合elasticsearch(或lucene)的任何文档结构。对每种语言进行具体分析是至关重要的,因此我们使用“_分析器”来区分这些语言

{
  "luck": {
    "properties": {
      "id": {
    "type": "long"
      },
      "pub": {
    "type": "long"
      },
      "pr": {
    "type": "long"
      },
      "loc": {
    "type": "geo_point"
      },
      "t": {
    "_analyzer": {
      "path": "t.lang"
    },
    "properties": {
      "lang": {
        "type": "string"
      },
    "properties": {
      "title": {
        "type": "string"
      },
      "desc": {
        "type": "string"
      },
      "tags": {
        "type": "string"
      }
    }
      }
    }
  }
}
A) 显然,这个想法不起作用:在放置映射之后,我们检索相同的映射(“GET”),它似乎忽略了特定的分析器(使用顶级“_分析器”的测试效果很好)。“_analyzer”是否适用于子文档?如果是,我们应如何参考它?我们还测试了如何将子文档声明为“对象”或“嵌套”。多语言文档索引应该如何工作

B) 一种可能是将每种语言放在自己的文档中:在这种情况下,我们如何管理id?最后,两个文档应该引用相同的id。例如,如果用户搜索“nature”(我们不知道用户是否打算用英语或法语查找“nature”),则此文档将在结果集中出现两次,并且计数和分页将非常错误(也是面计数)

有什么想法吗