Справка по запросуasticsearch - не найти документы - PullRequest
0 голосов
/ 27 сентября 2018

У меня много документов, проиндексированных вasticsearch.Теперь я создаю запрос, который нашел много документов - но они не нашли имена документов, например: «привет + друг», если я ищу привет - они нашли документ, но если поиск реального файла.имя «привет + друг»они не нашли его .... Что с моим запросом не так?То же самое относится и к файлам на других языках, таких как китайский.

Спасибо за помощь

            $params = [
            'index' => 'search_dokumentation',
            'type' => 'document',
            'size' => 500,
            'body' => [
                'query' => [
                    'bool' => [
                        'should' => [
                            'wildcard' => [
                                'file.name' => '*' . strtolower($searchTerm) . '*',
                            ],
                        ],
                        'minimum_should_match' => 1,
                    ],
                ],
                'sort' => [
                    '_score' => [
                        'order' => 'asc',
                    ],
                ],
            ],

"mappings": {
  "meta": {
    "_all": {
      "enabled": false
    },
    "properties": {
      "last_modified": {
        "type": "date",
        "format": "yyy-MM-dd HH:mm:ss"
      },
      "update_date": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      }
    }
  },
  "document": {
    "_all": {
      "enabled": false
    },
    "_source": {
      "excludes": [
        "file.content_base64"
      ]
    },
    "properties": {
      "article": {
        "properties": {
          "number": {
            "type": "keyword"
          }
        }
      },
      "file": {
        "properties": {
          "content_base64": {
            "type": "text"
          },
          "create_date": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "created": {
            "type": "date",
            "format": "yyy-MM-dd HH:mm:ss"
          },
          "extension": {
            "type": "keyword"
          },
          "last_accessed": {
            "type": "date",
            "format": "yyy-MM-dd HH:mm:ss"
          },
          "last_modified": {
            "type": "date",
            "format": "yyy-MM-dd HH:mm:ss"
          },
          "link_file": {
            "type": "keyword"
          },
          "link_folder": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "name": {
            "type": "text",
            "fields": {
              "decompound": {
                "type": "text",
                "analyzer": "my_decompound"
              },
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              },
              "simple": {
                "type": "text",
                "analyzer": "simple"
              }
            }
          },
          "path_file": {
            "type": "keyword"
          },
          "path_folder": {
            "type": "keyword"
          },
          "path_folder_short": {
            "type": "keyword"
          },
          "permissions": {
            "type": "long"
          },
          "size": {
            "type": "long"
          },
          "version": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          }
        }
      },
      "relation": {
        "properties": {
          "machine": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "plant": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "type": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          }
        }
      }
    }
  }
}

1 Ответ

0 голосов
/ 27 сентября 2018

Из вашего отображения похоже, что вы используете standard analyzer для file.name.Таким образом, match запрос должен работать для вас.Вот пример:

PUT newindex/_doc/1
{
  "file.name": "hello + friend"
}

GET newindex/_doc/_search
{
  "query": {
    "match": {
      "file.name": "hello + friend"
    }
  }
}

standard analyzer фактически удалит специальные символы.Так что если вы _analyze термин "привет + друг", вы увидите, что он разделяет его на два термина.

GET _analyze
{
  "text": ["hello + friend"],
  "analyzer": "standard"
}

Результаты:

{
  "tokens": [
    {
      "token": "hello",
      "start_offset": 0,
      "end_offset": 5,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "friend",
      "start_offset": 8,
      "end_offset": 14,
      "type": "<ALPHANUM>",
      "position": 1
    }
  ]
}

РЕДАКТИРОВАТЬ:

Для случая использования сопоставления имени файла "Betriebsanleitung_Schere + Stangenmagazin_V3.5.pdf"с частичным совпадением (термин" странный "), вы можете использовать query_string с некоторыми символами подстановки.

{
  "query": {
    "query_string": {
      "query": "*stangen*"
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...