知りたかっただけです。_source = falseのインデックスでElasticSearchのテキストを強調表示することは可能ですか?
ESにドキュメントがない場合、ハイライトを実行できないことはわかっていますが、ハイライト付きの完全な検索エンジンではなく、ESをハイライトエンジンとして使用する方法はありますか?(ハイライトクエリで完全なドキュメントを提供します)
ありがとう
知りたかっただけです。_source = falseのインデックスでElasticSearchのテキストを強調表示することは可能ですか?
ESにドキュメントがない場合、ハイライトを実行できないことはわかっていますが、ハイライト付きの完全な検索エンジンではなく、ESをハイライトエンジンとして使用する方法はありますか?(ハイライトクエリで完全なドキュメントを提供します)
ありがとう
私はそれが可能だとは思わない。
ただし、検索クエリとドキュメントで_analyzeを使用してから、トークンを比較してコードで強調表示することができます。
例えば:
curl -XGET 'localhost:9200/test/_analyze?analyzer=snowball' -d 'some search query keywords'
{"tokens":[{"token": "some"、 "start_offset":0、 "end_offset":4、 "type": ""、 "position":1}、{"token": "search"、 "start_offset":5、 "end_offset":11、 "type": ""、 "position":2}、{"token": "query"、 "start_offset":12、 "end_offset":17、 "type" :""、 "position":3}、{"token": "keyword"、 "start_offset":18、 "end_offset":26、 "type": ""、 "position":4}]}
curl -XGET'localhost:9200 / test / _analyze?analyzer = snowball' -d'$ document_text'
{"トークン":..}
次に、ドキュメント内でそれらのトークンの一致を探します。オフセットにより、ドキュメント内の正しいハイライト位置が提供されます。
{
"query": {
"query_string": {
"query": "**",
"fields["
sometext "]}},"
highlight {
"pre_tags": ["<em>"],
"post_tags[</em>"],
"order": "score",
"require_field_match": true,
"fields": {
"sometext": {
"fragment_size": 180,
"number_of_fragments": 1
}
}
}
}
ソースがデフォルトで非アクティブ化されていない場合は、次のことができます。
{
"_source" : ["_id"],
"query": {
"match" : {
"attachment.content" : "Setup"
}
},
"highlight": {
"fields" : {
"attachment.content" : {}
}
}
}
に何かを入れる必要があり_score
ます。それでも、見つかったドキュメントに関するすべての「メタデータ」が返されます。
{
"took": 4,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.2919385,
"hits": [
{
"_index": "test",
"_type": "_doc",
"_id": "xpto",
"_score": 0.2919385,
"_source": {},
"highlight": {
"attachment.content": [
"<em>Setup</em> the [GenericCommand.properties] file\n\nThe commands that ought to be recognized have to be defined"
]
}
}
]
}
}