Итак, мне нужно передать некоторую информацию из файлов XML в эластичный поиск, а затем выполнить поиск в этих файлах с примененными к ним весами tfidf.Мне также нужно вывести 20 лучших результатов.Я хочу сделать это с python.
До сих пор я был в состоянии успешно передать данные XML и создать индекс через python, создавая массивы и затем индексируя их в json-подобном формате.Я знаю, что это означает, что при индексировании большинство других опций, доступных черезasticsearch, получают значение по умолчанию, однако я не смог найти способ сделать это по-другому.Что мне остается делать, так как все данные передаются в индекс, так это искать их.Мне дают 10 документов, которые содержат заголовок и небольшое резюме содержащегося текста, и мне нужно вернуть 20 лучших результатов с помощью tfidf черезasticsearch.Вот как я собираю 10 текстовых файлов, которые нужно искать в моем индексе, и так я пытаюсь их искать.
queries = []
with open("testingQueries.txt") as file:
queries = [i.strip() for i in file]
for query_text in queries:
query = {
'query': {
'more_like_this': {
'fields': ['document.text'],
'like': query_text
}
}
}
results = es.search(index=INDEX_NAME, body=query)
print(str(results) + "\n")
Как вы можете видеть, я не добавил анализатор в этот запрос и не знаю, как добавить веса tfidf для поиска этих запросов в моих данных.Я искал ответ везде, но большинство ответов либо не связаны с Python, либо не решают мою проблему.Результаты поиска, которые я получаю, также не дают мне 20 лучших результатов ... фактически они не дают мне никаких результатов.Выходные данные выглядят так: {'take': 14, 'timed_out': False, '_shards': {'total': 5, 'success': 5, 'skipped': 0, 'failed': 0}, 'хиты »: {« всего »: 0,« max_score »: нет,« хиты »: []}}
, когда я пытаюсь сделать то же самое с« соответствием »вместо« больше_подобных », я получаю многобольше результатов с попаданиями, но опять же, мне все равно нужны результаты tfidf и результаты из 20 лучших документов, похожих на мои запросы.