ElasticSearch - общий запрос с отсечкой, оценка высокочастотных слов только тогда, когда сопоставляются все низкочастотные слова - PullRequest
0 голосов
/ 24 октября 2018

Пытается использовать "https://www.elastic.co/guide/en/elasticsearch/reference/6.4/query-dsl-common-terms-query.html", но не может заставить одну конкретную вещь работать: добавлять оценки высокочастотных слов к общему баллу, ТОЛЬКО если все низкочастотные слова из запроса совпадают.

Пробовал использовать "low_freq_operator": "and", но он делает все низкочастотные слова из запроса обязательными - чего я не знаю.

Также - если я использую

"minimum_should_match": {
    "low_freq" : "50%",
}

Означает ли это, что еслиВ запросе есть 4 низкочастотных слова, документ с двумя из них будет возвращен в качестве обращения, но документ с одним словом не будет возвращен, верно?

Спасибо.

1 Ответ

0 голосов
/ 24 октября 2018

Для Запрос общих условий

Низкочастотные слова

  • Более важно
  • Вы можете построить запрос квернуть документы, в которых все слова строки запроса
    • must be present (использовать "low_freq_operator": "and")
    • only some of them (использоватьиз "low_freq_operator": "or"
    • some percentage of them (используйте minimum_should_match)

Высокочастотные слова

  • Менее важно.
  • Вы можете создать запрос к influence the score, в котором все стоп-слова в строке запроса
    • must be considered (используйте "high_freq_operator": "and")
    • only some of them (используйте "high_freq_operator": "or")
    • some percentage of them (используйте minimum_should_match)
  • влияет только на оценку релевантности.
  • Если низкочастотных слов не существует, то это типичное предложение should всех терминов в строке запроса

Как классифицировать слова как менее частые или более частые

Согласно LINK ,

Термины распределяются по группам высоких или низких частот на основе cutoff_frequency, которая может быть указана как абсолютная частота (> = 1) или как относительная частота (0,0 .. 1,0) ....

Возможно, наиболее интересным свойством этого запроса является то, что он автоматически адаптируется к специфическим для домена стоп-словам.Например, на сайте видеохостинга общие термины, такие как «клип» или «видео», будут автоматически работать как стоп-слова без необходимости вести список вручную.

Как это работает с примером

Из этого LINK ,

Запрос общих терминов is a modern alternative to stopwords which improves the precision and recall of search results (с учетом стоп-слов), без ущерба для производительности.

Допустим, у меня есть документы ниже:

Document 1: Is there stairway to this path?
Document 2: Is there a stairway to heaven?
Document 3: Stairway to heaven
..... 
.....

Теперь скажите, что ваш поисковый запрос выглядит следующим образом:

{
    "query": {
        "common": {
            "body": {
                "query": "stairway to heaven",
                "cutoff_frequency": 0.001,
                "low_freq_operator": "and"
            }
        }
    }
}

При использовании and результат будет только Document 3 followed by Document 2.И когда вы используете or, результат будет Document 3, Document 2, Document 1 соответственно.

Поэтому, когда вы используете or, высокочастотное слово, то есть to, будет использоваться здесь, чтобы влиять на оценку.Аналогичным образом high_freq_operator будет применяться для стоп-слов, однако он снова будет использоваться только для влияния на оценку.

Итак, для вашего первого запроса, надеюсь, что приведенного выше объяснения будет достаточно, а для следующего запроса:

Означает ли это, что если в запросе 4 низкочастотных слова, документ с 2 изони будут возвращены как попадание, но документ только с одним из слов запроса не будет возвращен, верно?

Да, это правильно.

Надеюсьпомогает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...