2016-10-04 3 views
0

Я в сценарии, где мне нужно придавать большее значение документу в индексе, если у него есть уникальное ключевое слово. Позвольте мне представить сценарий. Скажем, мне нужно искать на срок znkdref неудачной поэтому результат будет иметь содержание, которые имеют znkdref или неудачная или znkdref неудачной, но здесь я хочу, чтобы содержимое, которые имеют znkdref неудачная должна иметь наивысшая актуальность, а затем контент, имеющий . znkdref должен иметь меньшую актуальность, а затем контент, имеющий unsuccessfull должен иметь наименьшую актуальность.Усиление оценки релевантности на основе найденного уникального ключевого слова

Есть ли способ достичь этого? Я буду рад оказать помощь

ответ

0

Вы хотите использовать Query Time Boosting, в частности Prioritized Clauses.

Вкратце вам нужно извлечь ключевые слова, которые вы хотите повысить, и построить запрос, который ускоряет части, которые вы хотите.

{ 
"query": { 
    "bool": { 
     "should": [{ 
      "match": { 
       "content": { 
        "query": "znkdref", 
        "boost": 2 
       } 
      } 
     }, 
     { 
     "match": { 
       "content": { 
        "query": "unsuccessfull"    
       } 
      } 
     }] 
    } 
} 
} 

Обновление на основе комментариев:

Если вы хотите знать, почему документ получил счет, который он сделал (возможно, чтобы идентифицировать «ключевые слова»), то вы можете перейти в «объяснить», как запроса или установить его в корневой загрузке POST. Результат теперь будет иметь число отсчетов частоты и суб-оценки.

+0

спасибо за ответ, но это не объясняет мою потребность. Приведенное выше условие является лишь примером, главный вопрос, поскольку Elasticsearch имеет свою особенность IDF. Таким образом, мы можем использовать одну и ту же функцию. Потому что мы не знаем, что будет искать ключевое слово. Сможем ли мы отличить уникальное ключевое слово, используя Elasticsearch. –

+0

Понятно, что мне было непонятно. Я обновил свой ответ, чтобы включить в него возможность использования функции объяснения. –

0

Вы имеете в виду «znkdref» - ​​уникальное ключевое слово? Например, «znkdref» - ​​это особое имя. Если так.

  • Конечно, документы, соответствующие всей строке запроса «znkdref unsuccessfull», будут иметь самую высокую оценку соответствия.
  • Документы, содержащие «znkdref», обычно имеют более высокий рейтинг релевантности, чем документы, содержащие «unsuccessfull». Потому что оценка TF.IDF «znkdref» больше, чем оценка TF.IDF «unsuccessfull».

Функция оценка релевантности описана в https://www.elastic.co/guide/en/elasticsearch/guide/current/practical-scoring-function.html

Я надеюсь, что мой ответ полезным для вас.

Смежные вопросы