Индексная фраза запроса в качестве перколятора
Я пытаюсь отфильтровать некоторые тексты и добавить гиперссылку на совпадения. Но прежде чем добавить гиперссылку, я не мог понять, как выделить слова больше, чем одно. Вот мой счастливый путь для сценария:
- Добавляем отображение так:
curl -X PUT "localhost:9200/my-index" -H 'Content-Type: application/json' -d'
{
"mappings": {
"_doc": {
"properties": {
"message": {
"type": "text"
},
"query": {
"type": "percolator"
}
}
}
}
}
'
- Зарегистрировать запрос в перколаторе
curl -X PUT "localhost:9200/my-index/_doc/1?refresh" -H 'Content-Type: application/json' -d'
{
"query" : {
"match" : {
"message" : "the bonsai three in a jungle"
}
}
}
'
- Новый документ выделен моим запросом
curl -X GET "localhost:9200/my-index/_search" -H 'Content-Type: application/json' -d'
{
"query" : {
"percolate" : {
"field": "query",
"document" : {
"title" : "A new bonsai tree in the office and jungle"
}
}
},
"highlight": {
"fields": {
"title": {}
}
}
}
'
выход:
{
"took":10,
"timed_out":false,
"_shards":{
"total":#,
"successful":#,
"skipped":0,
"failed":0
},
"hits":{
"total":#,
"max_score":1.7260926,
"hits":[
{
"_index":"my-index",
"_type":"_doc",
"_id":"1",
"_score":1.7260926,
"_source":{
"query":{
"match":{
"title":"the bonsai tree in a jungle"
}
}
},
"fields":{
"_percolator_document_slot":[
0
]
},
"highlight":{
"title":[
"<em>A</em> new <em>bonsai</em> <em>tree</em> <em>in</em> <em>the</em> office and <em>jungle</em>"
]
}
}
]
}
}
Как видите, буквально три бонсай в джунглях не равны Новое дерево бонсай в офисе и джунглях. Но это соответствовало каждому слову в моем личном запросе. Почему так происходит?
- И тогда я добавляю новый перколят запрос
curl -X PUT "localhost:9200/my-index/_doc/2?refresh" -H 'Content-Type: application/json' -d'
{
"query" : {
"match" : {
"title" : "the enojen tree in a kerojen"
}
}
}
'
и новый поиск:
curl -X GET "localhost:9200/my-index/_search" -H 'Content-Type: application/json' -d'
{
"query" : {
"percolate" : {
"field": "query",
"document" : {
"title" : "A new bonsai tree in the office and jungle. The enojen tree in a kerojen."
}
}
},
"highlight": {
"fields": {
"title": {}
}
}
}
'
выход:
{
"took":12,
"timed_out":false,
"_shards":{
"total":5,
"successful":5,
"skipped":0,
"failed":0
},
"hits":{
"total":45,
"max_score":2.1576157,
"hits":[
{
"_index":"my-index",
"_type":"_doc",
"_id":"2",
"_score":2.1576157,
"_source":{
"query":{
"match":{
"title":"the enojen tree in a kerojen"
}
}
},
"fields":{
"_percolator_document_slot":[
0
]
},
"highlight":{
"title":[
"<em>A</em> new bonsai <em>tree</em> <em>in</em> <em>the</em> office and jungle. <em>The</em> <em>enojen</em> <em>tree</em> <em>in</em> <em>a</em> <em>kerojen</em>."
]
}
},
{
"_index":"my-index",
"_type":"_doc",
"_id":"1",
"_score":2.1576157,
"_source":{
"query":{
"match":{
"title":"the bonsai tree in a jungle"
}
}
},
"fields":{
"_percolator_document_slot":[
0
]
},
"highlight":{
"title":[
"<em>A</em> new <em>bonsai</em> <em>tree</em> <em>in</em> <em>the</em> office and <em>jungle</em>. <em>The</em> enojen <em>tree</em> <em>in</em> <em>a</em> kerojen."
]
}
}
]
}
}
как вы видите два разных совпадения, но я хочу объединить два моих запроса в поиске. Разве это не возможно?
- (Этот шаг еще не был достигнут) Изменение
pre-tag
а такжеpost-tag
<em></em>
с<a href="$var"></a>
и меняется$var
с некоторыми кодами.
В заключение,
- Все документы будут отображаться на html-странице с гиперссылками. (С надеждой:))
Возможно ли то, что я пытаюсь сделать? Если нет, не могли бы вы объяснить, какая часть не может быть выполнена? Если это возможно, не могли бы вы дать мне несколько советов, как это сделать и как улучшить?