36

ElasticSearch ドキュメントで分析/トークン化されたテキストにアクセスしようとしています。

Analyze APIを使用して、分析モジュールに従って任意のテキストを分析できることは知っています。そのため、ドキュメントのデータをコピーして Analyze API に貼り付け、トークン化された方法を確認できました。

ただし、これは不必要に時間がかかるようです。検索結果でトークン化されたテキストを返すように ElasticSearch に指示する方法はありますか? ドキュメントを調べましたが、何も見つかりませんでした。

4

3 に答える 3

17

この質問は少し古いですが、おそらく追加の回答が必要だと思います。

ElasticSearch 1.0.0 では、Term Vector APIが追加されました。これにより、ElasticSearch が内部に格納するトークンにドキュメントごとに直接アクセスできます。API ドキュメントはこれについてあまり明確ではありませんが (例でのみ言及されています)、API を使用するには、最初にマッピング定義term_vectorで、各フィールドのプロパティを使用して項ベクトルを格納することを示す必要があります。

于 2014-06-24T15:35:08.510 に答える
15

この他の回答を見てください:elasticsearch - Return the tokens of a field。残念ながら、提供されたスクリプトを使用して、フィールドの内容をオンザフライで再分析する必要があります。
この機能を公開するプラグインを作成できるはずです。アイデアは、次の 2 つのエンドポイントを追加することです。

  • solr TermsComponentのように lucene TermsEnum を読み取ることができ、自動提案にも役立ちます。ドキュメントごとではなく、用語の頻度とドキュメントの頻度を持つインデックス上のすべての用語だけであることに注意してください(多くの固有の用語ではコストがかかる可能性があります)
  • solr TermVectorComponentのように、有効な場合は項ベクトルを読み取ることができます。これはドキュメントごとですが、用語ベクトルを保存する必要があり (マッピングで構成できます)、有効な場合は位置とオフセットを取得することもできます。
于 2012-11-15T22:20:48.643 に答える
5

スクリプトを使用することもできますが、サーバーでスクリプトが有効になっている必要があります。

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"
            }
        }
    }
}'

スクリプトを許可するデフォルトの設定はエラスティック サーチのバージョンによって異なりますので、公式ドキュメントから確認してください。

于 2015-08-03T21:33:02.670 に答える