2013-05-09 2 views
1

Я очень новичок в поиске elastics, и меня интересует, как можно получить количество совпадающих терминов внутри каждого обрабатываемого документа. Я знаю, что могу получить оценку, но я ищу, чтобы получить количество матчей за каждый документ, возможно ли это?Elasticsearch, как вернуть количество терминов для каждого документа

Редактировать после mguillermin ответа

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

Благодаря

ответ

3

Для проверки одного документа, вы можете получить такого рода информацию, используя explain API: http://www.elasticsearch.org/guide/reference/api/explain/

Если вам нужна эта информация, собранная вместе с результатами запроса, вы можете просто добавить "explain": true в тело, отправленное на _search. Пример:

{ 
    "explain": true, 
    "query": { 
     "term": { 
      "description": "test" 
     } 
    } 
} 

С помощью этого параметра вы получите для каждого hit связанных _explanation данных. Пример:

"_explanation": { 
    "value": 1.4845161, 
    "description": "fieldWeight(description:test in 63), product of:", 
    "details": [ 
     { 
     "value": 1, 
     "description": "tf(termFreq(description:test)=1)" 
     }, 
     { 
     "value": 5.9380646, 
     "description": "idf(docFreq=23, maxDocs=3348)" 
     }, 
     { 
     "value": 0.25, 
     "description": "fieldNorm(field=description, doc=63)" 
     } 
    ] 
} 
+0

Спасибо, это работает, если у меня уже есть документ, на который я хочу запросить. Проблема в том, что мне нужно запросить этот термин, и в результате мне нужен термин частота для каждого документа. В этом случае мне нужно сначала запросить для всех doc-идентификатор, который соответствует данному термину, и чем для каждого документа мне нужно вызвать объяснение, чтобы получить tf: это создает слишком много накладных расходов для каждого отдельного поиска. – markov00

+2

Вы также можете добавить ' объяснять 'существующий запрос. Таким образом, вам не нужно делать другой запрос для каждого документа. Я добавлю больше информации об этом в свой ответ. – mguillermin

+0

Спасибо, что именно я искал! – markov00

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