Получить аналитические маркеры из документов ElasticSearch
Попытка получить доступ к анализируемому/токенизированному тексту в моих документах ElasticSearch.
Я знаю, что вы можете использовать Analyse API для анализа произвольного текста в соответствии с вашими модулями анализа. Поэтому я мог копировать и вставлять данные из моих документов в API анализа, чтобы увидеть, как он был маркирован.
Это кажется излишне трудоемким. Есть ли способ проинструктировать ElasticSearch, чтобы вернуть токеный текст в результатах поиска? Я просмотрел документы и ничего не нашел.
Ответы
Ответ 1
Посмотрите на этот ответ: elasticsearch - верните маркеры поля. К сожалению, это требует повторного анализа содержимого вашего поля с помощью script.
Должна быть возможность написать плагин, чтобы открыть эту функцию. Идея состоит в том, чтобы добавить две конечные точки:
- позволяют читать lucene TermsEnum, как solr TermsComponent, полезно также делать автосообщения. Обратите внимание, что это не будет за документ, а только каждый термин в индексе с частотой и частотой документа (потенциально дорогостоящим с множеством уникальных терминов).
- позволяют читать термин "векторы", если он включен, как это делает solr TermVectorComponent. Это будет за документ, но для хранения векторов (вы можете настроить его в своем сопоставлении) необходимо также сохранить позиции и смещения, если они включены.
Ответ 2
Этот вопрос очень старый, но, возможно, я думаю, что необходим дополнительный ответ.
С ElasticSearch 1.0.0 был добавлен API-интерфейс вектора векторов, который дает вам прямой доступ к хранилищам ElkSearch под куполом на основе документа. Документы API не совсем понятны (упоминается только в этом примере), но для того, чтобы использовать API, вы должны сначала указать в своем определении , которое вы хотите для хранения векторов сроков с свойством term_vector
в каждом поле.
Ответ 3
Возможно, вы захотите использовать скрипты, однако ваш сервер должен включить сценарии.
curl 'http://localhost:9200/your_index/your_type/_search?pretty=true' -d '{
"query" : {
"match_all" : { }
},
"script_fields": {
"terms" : {
"script": "doc[field].values",
"params": {
"field": "field_x.field_y"
}
}
}
}'
Значение по умолчанию для разрешения script зависит от версии для поиска эластичности, поэтому, пожалуйста, проверьте это из официальной документации.