Подтвердить что ты не робот

Получить аналитические маркеры из документов ElasticSearch

Попытка получить доступ к анализируемому/токенизированному тексту в моих документах ElasticSearch.

Я знаю, что вы можете использовать Analyse API для анализа произвольного текста в соответствии с вашими модулями анализа. Поэтому я мог копировать и вставлять данные из моих документов в API анализа, чтобы увидеть, как он был маркирован.

Это кажется излишне трудоемким. Есть ли способ проинструктировать ElasticSearch, чтобы вернуть токеный текст в результатах поиска? Я просмотрел документы и ничего не нашел.

4b9b3361

Ответ 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 зависит от версии для поиска эластичности, поэтому, пожалуйста, проверьте это из официальной документации.