Результаты Elasticsearch не очень соответствуют моему запросу в поле отображения - PullRequest
0 голосов
/ 13 июня 2018

Пожалуйста, найдите мой запрос на сопоставление ниже для поля filename.

PUT /articles
{
   "settings" : {
      "analysis" : {
         "analyzer" : {
            "filename_search" : {
               "tokenizer" : "filename",
               "filter" : ["lowercase"]
            },
            "filename_index" : {
               "tokenizer" : "filename",
               "filter" : ["lowercase","edge_ngram"]
            }
         },
         "tokenizer" : {
            "filename" : {
               "pattern" : "[^\\p{L}\\d]+",
               "type" : "pattern"
            }
         },
         "filter" : {
            "edge_ngram" : {
               "side" : "front",
               "max_gram" : 50,
               "min_gram" : 1,
               "type" : "edgeNGram"
            }
         }
      }
   },
   "mappings" : {
      "doc" : {
         "properties" : {
            "filename" : {
               "type" : "text",
               "search_analyzer" : "filename_search",
               "analyzer" : "filename_index"
            }
         }
      }
   }
}

Если я пытаюсь запросить series1333372 doc623258 и ожидаю karthik_series1333372_oracle_page_doc623258_v1_en-EU.pdf.Но он дает все файлы, которые имеют series1333372, даже не проверяя на doc623258.

Пожалуйста, найдите мой запрос ниже

get articles/_search
{
   "query" : {
      "match" : {
         "filename" : "series1333372 doc623258"
      }
   }
}

Я вставляю следующие образцы документов для тестированияиз Кибаны

POST articles/doc/1
{
  "filename" : "karthik_series1333372_oracle_page_doc623258_v1_en-EU.pdf"
}

POST articles/doc/2
{
  "filename" : "karthik_series1333372_sun_page_doc658_v1_en-EU.pdf"
}

POST articles/doc/3
{
  "filename" : "series1333372_oracle_page_doc623_v1_en-US.pdf"
}

POST articles/doc/4
{
  "filename" : "Engineering series1333372 valve_page doc6232 v1_en-US.pdf"
}

POST articles/doc/5
{
  "filename" : "Machines_series1333372_page_doc62258_v1_en-US.pdf"
}

POST articles/doc/6
{
  "filename" : "AIX series1333372 IBM page doc62358 v1_en-EU.pdf"
}

1 Ответ

0 голосов
/ 13 июня 2018

Оператор по умолчанию match - OR.Если вы хотите, чтобы все ваши условия присутствовали, измените его следующим образом

GET articles/_search
{
   "query" : {
      "match" : {
         "filename" : {
           "query": "series1333372 doc623258",
            "operator" : "and"
         }
      }
   }
}
...