Индексная фраза запроса в качестве перколятора

Я пытаюсь отфильтровать некоторые тексты и добавить гиперссылку на совпадения. Но прежде чем добавить гиперссылку, я не мог понять, как выделить слова больше, чем одно. Вот мой счастливый путь для сценария:

  1. Добавляем отображение так:
curl -X PUT "localhost:9200/my-index" -H 'Content-Type: application/json' -d'
{
    "mappings": {
        "_doc": {
            "properties": {
                "message": {
                    "type": "text"
                },
                "query": {
                    "type": "percolator"
                }
            }
        }
    }
}
'
  1. Зарегистрировать запрос в перколаторе
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"
        }
    }
}
'
  1. Новый документ выделен моим запросом
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>"
               ]
            }
         }
      ]
   }
}

Как видите, буквально три бонсай в джунглях не равны Новое дерево бонсай в офисе и джунглях. Но это соответствовало каждому слову в моем личном запросе. Почему так происходит?

  1. И тогда я добавляю новый перколят запрос
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."
               ]
            }
         }
      ]
   }
}

как вы видите два разных совпадения, но я хочу объединить два моих запроса в поиске. Разве это не возможно?

  1. (Этот шаг еще не был достигнут) Изменение pre-tag а также post-tag<em></em> с <a href="$var"></a> и меняется $var с некоторыми кодами.

В заключение,

  1. Все документы будут отображаться на html-странице с гиперссылками. (С надеждой:))

Возможно ли то, что я пытаюсь сделать? Если нет, не могли бы вы объяснить, какая часть не может быть выполнена? Если это возможно, не могли бы вы дать мне несколько советов, как это сделать и как улучшить?

0 ответов

Другие вопросы по тегам