Есть ли способ в построителе нечетких запросов определить, является ли какая-либо запись идеальным совпадением? - PullRequest
0 голосов
/ 31 января 2020

У меня есть нечеткий запрос, написанный ниже:

MatchQueryBuilder fuzzyQuery = QueryBuilders.matchQuery("color","blue color").fuzziness(Fuzziness.AUTO).fuzzyTranspoistions(true);

BoolQueryBuilder bool = new BoolQueryBuilder();

bool.should(fuzzyQuery);

SeachSourceBuilder search = new SearchSourceBuilder();

search.query(bool);

SearchRequest searchRequest = new SearchRequest(<index>,<type>)

searchRequest .source(search)

SearchResponse res = client.search(searchRequest,RequestOptions.DEFAULT);

'res' возвращает некоторые записи из elasti c поиск, где столбец 'color' имеет значения, аналогичные строке 'blue color'.

Теперь есть какой-то способ определить, содержит ли какая-либо из записей результатов поле 'color' с точным значением 'blue color '?

Спасибо.

1 Ответ

0 голосов
/ 03 февраля 2020

Я бы предложил добавить запрос с точным соответствием к вашему нечеткому запросу и увеличить запрос с точным соответствием со значительным повышающим коэффициентом, чтобы выделить точные совпадения. Что-то вроде

{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "color": {
              "query": "blue color",
              "fuzziness": "auto",
              "fuzzy_transpositions": "true"
            }
          }
        },
        {
          "term": {
            "color.keyword": {
              "value": "blue color",
              "boost": 1000
            }
          }
        }
      ]
    }
  }
}

, что приводит к таким результатам

...
"hits" : [
  {
    "_index" : "so-score",
    "_type" : "_doc",
    "_id" : "IYG5C3AB1HeSr1rnK_bY",
    "_score" : 1205.3591,
    "_source" : {
      "color" : "blue color"
    }
  },
  {
    "_index" : "so-score",
    "_type" : "_doc",
    "_id" : "IoG5C3AB1HeSr1rnPfZA",
    "_score" : 1.2476649,
    "_source" : {
      "color" : "blue bolor"
    }
  },
...
...