Можно ли индексировать вложенные атрибуты с помощью ArangoSearch Views? - PullRequest
0 голосов
/ 28 мая 2019

Я хотел бы создать представление ArangoSearch для следующего документа:

  "Title": [
    {
      "lang": "en",
      "value": "Game of thrones"
    },
    {
      "lang": "fr",
      "value": "Throne de fer"
    }
  ]
}

Я попытался связать представление следующим образом:

{"links": {
    "SearchTest": {
      "analyzers": [
        "identity",
        "text_en",
        "text_fr"
      ],
      "fields": {
        "Title[0].value": {
          "analyzers": [
            "text_en"
          ]
        },
        "Title[1].value": {
          "analyzers": [
            "text_fr"
          ]
        }
      },
      "includeAllFields": true,
      "storeValues": "id",
      "trackListPositions": false
    }
  }}

Но мне кажется, чтона работу

Вот запрос

FOR d IN SearchTestVW SEARCH PHRASE(d.Title[0].value,'Game','text_en') RETURN d

Он не возвращает никаких результатов.Возможно ли это сделать?Я попытался с корневыми атрибутами, и он работает нормально.Но наши документы структурированы так.

1 Ответ

0 голосов
/ 31 мая 2019

Вложение возможно при использовании fields: { "objectName": fields: "fieldName"}.Если вы определяете все анализаторы на «корневом» уровне и устанавливаете includeAllFields в true, вам даже не нужно указывать поля по отдельности.

У вас есть возможность использовать анализатор на уровне объекта и просто определить, какие атрибуты должны охватываться поисковым индексом.Это уменьшает размер индекса, и вы можете исключить поля, которые могут просто добавить «шум» к результатам.

  "links": {
    "SearchTest": {
      "analyzers": [
        "identity"
      ],
      "fields": {
        "Title": {
          "analyzers": [
            "text_en"
          ],
          "fields": {
            "value": {},
            "lang": {}
          }
        }
      },
      "includeAllFields": false,
      "storeValues": "none",
      "trackListPositions": false

Теперь это должно работать:

FOR d IN SearchTestVW SEARCH PHRASE(d.Title.value,'Game','text_en') RETURN d

...