Хранение частот токенов в эластичном поиске вместо хранения текста

ArrayIndexOutOfBoundsException само имя объясняет, что если вы пытаетесь получить доступ к значению в индексе, который выходит за рамки размера массива, возникает такое исключение.

В вашем случае вы можете просто удалить знак равенства из цикла for.

for(int i = 0; i<name.length; i++)

Лучшим вариантом является итерация массива:

for(String i : name )
      System.out.println(i);
1
задан Anton 4 March 2019 в 12:50
поделиться

1 ответ

Для ваших целей вы можете добавить термин-вектор в текстовое поле для термина «частоты». Пожалуйста, прочитайте документацию здесь . Затем вы можете использовать массовый запрос для termvector, который здесь представлен как mtermvector- doc и python api doc . Работает со списком идентификаторов. Например, если у вас есть список всех идентификаторов ваших документов, которые соответствуют «небу», вы можете действовать следующим образом:

from elasticsearch import Elasticsearch

es = Elasticsearch()

index = "abc"
my_doc_type ="your_doc_type"
ids = []

result = es.search(index="abc", doc_type= my_doc_type body={"query": {"term": {"my_field":  "sky"}}})     

for res in in result['hits']['hits']:
    ids.append(res['ids'])




for doc in es.mtermvectors(index=index,doc_type=doc_type,body=dict(ids=ids,parameters=dict(term_statistics=True,field_statistics=True,fields=fields)))['docs']:                                                                                                                                                            
    fields = doc['term_vectors']  
    terms = field['terms']  
    tf = vec["term_freq"]
    df =  vec["doc_freq"]
0
ответ дан Lupanoide 4 March 2019 в 12:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: