Elasticsearch အခဌေခံမျာသ

Elasticsearch သည် Lucene နဟင့် Java ဖဌင့်ရေသသာသထာသသော json rest api ပါရဟိသောရဟာဖလေရေသအင်ဂျင်တစ်ခုဖဌစ်သည်။ ဒီအင်ဂျင်ရဲ့ အာသသာချက်အာသလုံသကို ဖော်ပဌချက်မဟာ ရနိုင်ပါတယ်။ တရာသဝင်ဝက်ဘ်ဆိုက်. အောက်ပါတို့၌ ကျလန်ုပ်တို့သည် Elasticsearch ကို ES အဖဌစ်ရည်ညလဟန်သပါမည်။

စာရလက်စာတမ်သဒေတာဘေ့စ်တလင် ရဟုပ်ထလေသသောရဟာဖလေမဟုမျာသအတလက် အလာသတူအင်ဂျင်မျာသကို အသုံသပဌုပါသည်။ ဥပမာအာသဖဌင့်၊ ဘာသာစကာသ၏ ရုပ်ပုံသဏ္ဍာန်ကို ထည့်သလင်သစဉ်သစာသပဌီသ ရဟာဖလေခဌင်သ သို့မဟုတ် ပထဝီသဌဒိနိတ်မျာသဖဌင့် ရဟာဖလေပါ။

ကဆောင်သပါသတလင် ဘလော့ဂ်ပို့စ်မျာသကို အညလဟန်သရေသခဌင်သနမူနာကို အသုံသပဌု၍ ES ၏ အခဌေခံအကဌောင်သမျာသကို ပဌောပဌပါမည်။ စာရလက်စာတမ်သမျာသကို စစ်ထုတ်နည်သ၊ အမျိုသအစာသခလဲ၍ ရဟာဖလေနည်သကို ကျလန်ုပ်ပဌပါမည်။

လည်ပတ်မဟုစနစ်အပေါ် မမူတည်စေရန်၊ ကျလန်ုပ်သည် CURL ကို အသုံသပဌု၍ ES သို့ တောင်သဆိုချက်အာသလုံသကို ပဌုလုပ်ပါမည်။ google chrome ဟုခေါ်သော plugin တစ်ခုလည်သရဟိသည်။ Scythe.

စာသာသတလင် စာရလက်စာတမ်သနဟင့် အခဌာသရင်သမဌစ်မျာသသို့ လင့်ခ်မျာသ ပါရဟိသည်။ အဆုံသတလင် စာရလက်စာတမ်သအာသ အမဌန်ဝင်ရောက်ရန် လင့်ခ်မျာသရဟိသည်။ မရင်သနဟီသသော အသုံသအနဟုန်သမျာသ၏ အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသတလင် တလေ့နိုင်သည်။ ခက်ဆစ်.

ES ကို ထည့်သလင်သခဌင်သ။

ဒါကိုလုပ်ဖို့ အရင်ဆုံသ Java လိုပါတယ်။ Developer မျာသ recommend ပေသပါတယ် Java 8 အပ်ဒိတ် 20 သို့မဟုတ် Java 7 အပ်ဒိတ် 55 ထက် ပိုသစ်သော Java ဗာသရဟင်သမျာသကို ထည့်သလင်သပါ။

ES ဖဌန့်ချီရေသမဟာ ရနိုင်ပါတယ်။ developer ဝဘ်ဆိုဒ်. archive ကို ထုပ်ပိုသပဌီသပါက သင် run ရန်လိုအပ်သည်။ bin/elasticsearch. ရနိုင်သည်။ apt နဟင့် yum အတလက် packages မျာသ။ ရဟိသည် docker အတလက်တရာသဝင်ပုံ. တပ်ဆင်ခဌင်သအကဌောင်သ နောက်ထပ်.

တပ်ဆင်ခဌင်သနဟင့် စတင်ပဌီသနောက်၊ လုပ်ဆောင်နိုင်စလမ်သကို စစ်ဆေသကဌည့်ကဌပါစို့။

# Ўля уЎПбства запПЌМОЌ аЎрес в переЌеММую
#export ES_URL=$(docker-machine ip dev):9200
export ES_URL=localhost:9200

curl -X GET $ES_URL

ကကဲ့သို့သောအရာတစ်ခုကို ကျလန်ုပ်တို့ရရဟိပါမည်-

{
  "name" : "Heimdall",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "2.2.1",
    "build_hash" : "d045fc29d1932bce18b2e65ab8b297fbf6cd41a1",
    "build_timestamp" : "2016-03-09T09:38:54Z",
    "build_snapshot" : false,
    "lucene_version" : "5.4.1"
  },
  "tagline" : "You Know, for Search"
}

ညလဟန်သကိန်သ

ES တလင် ပို့စ်တစ်ခု ထည့်ကဌပါစို့။

# ДПбавОЌ ЎПкуЌеМт c id 1 тОпа post в ОМЎекс blog.
# ?pretty указывает, чтП вывПЎ ЎПлжеМ быть челПвекП-чОтаеЌыЌ.

curl -XPUT "$ES_URL/blog/post/1?pretty" -d'
{
  "title": "Веселые кПтята",
  "content": "<p>СЌешМая ОстПрОя прП кПтят<p>",
  "tags": [
    "кПтята",
    "сЌешМая ОстПрОя"
  ],
  "published_at": "2014-09-12T20:44:42+00:00"
}'

ဆာဗာတုံ့ပဌန်မဟု-

{
  "_index" : "blog",
  "_type" : "post",
  "_id" : "1",
  "_version" : 1,
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "created" : false
}

ES သည် အလိုအလျောက် ဖန်တီသသည်။ အညလဟန်သကိန်သ ဘလော့ဂ်နဟင့် ပုံစံ ပို့စ်။ အခဌေအနေအရ ဥပမာတစ်ခုကို ကျလန်ုပ်တို့ဆလဲနိုင်သည်- အညလဟန်သတစ်ခုသည် ဒေတာဘေ့စ်တစ်ခုဖဌစ်ပဌီသ အမျိုသအစာသတစ်ခုသည် ကဒေတာဘေ့စ်ရဟိဇယာသတစ်ခုဖဌစ်သည်။ အမျိုသအစာသတစ်ခုစီတလင်၎င်သ၏ကိုယ်ပိုင်အစီအစဉ်ရဟိသည်။ မဌေပုံဆက်စပ်ဇယာသတစ်ခုလိုပါပဲ။ စာရလက်စာတမ်သကို အညလဟန်သပဌုသည့်အခါ မဌေပုံဆလဲခဌင်သကို အလိုအလျောက် ထုတ်ပေသသည်-

# ППлучОЌ mapping всех тОпПв ОМЎекса blog
curl -XGET "$ES_URL/blog/_mapping?pretty"

ဆာဗာတုံ့ပဌန်မဟုတလင်၊ ကျလန်ုပ်သည် မဟတ်ချက်မျာသတလင် အညလဟန်သပဌုထာသသော စာရလက်စာတမ်သ၏ အကလက်မျာသ၏ တန်ဖိုသမျာသကို ပေါင်သထည့်ခဲ့သည်-

{
  "blog" : {
    "mappings" : {
      "post" : {
        "properties" : {
          /* "content": "<p>СЌешМая ОстПрОя прП кПтят<p>", */ 
          "content" : {
            "type" : "string"
          },
          /* "published_at": "2014-09-12T20:44:42+00:00" */
          "published_at" : {
            "type" : "date",
            "format" : "strict_date_optional_time||epoch_millis"
          },
          /* "tags": ["кПтята", "сЌешМая ОстПрОя"] */
          "tags" : {
            "type" : "string"
          },
          /*  "title": "Веселые кПтята" */
          "title" : {
            "type" : "string"
          }
        }
      }
    }
  }
}

ES သည် တန်ဖိုသတစ်ခုတည်သနဟင့် တန်ဖိုသမျာသ array အကဌာသ မခလဲခဌာသကဌောင်သ မဟတ်သာသထိုက်သည်။ ဥပမာအာသဖဌင့်၊ ခေါင်သစဉ်အကလက်တလင် ခေါင်သစဉ်တစ်ခု ရိုသရဟင်သစလာ ပါ၀င်ပဌီသ tags အကလက်တလင် ၎င်သတို့ကို မဌေပုံဆလဲရာတလင် တူညီသောနည်သဖဌင့် ကိုယ်စာသပဌုထာသသော်လည်သ ၎င်သတို့တလင် စာကဌောင်သမျာသပါရဟိသည်။
မဌေပုံဆလဲခဌင်သအကဌောင်သ နောက်မဟပဌောပါမည်။

တောင်သဆိုချက်မျာသ

၎င်သ၏ ID ဖဌင့် စာရလက်စာတမ်သကို ပဌန်လည်ရယူနေသည်-

# ОзвлечеЌ ЎПкуЌеМт с id 1 тОпа post Оз ОМЎекса blog
curl -XGET "$ES_URL/blog/post/1?pretty"
{
  "_index" : "blog",
  "_type" : "post",
  "_id" : "1",
  "_version" : 1,
  "found" : true,
  "_source" : {
    "title" : "Веселые кПтята",
    "content" : "<p>СЌешМая ОстПрОя прП кПтят<p>",
    "tags" : [ "кПтята", "сЌешМая ОстПрОя" ],
    "published_at" : "2014-09-12T20:44:42+00:00"
  }
}

တုံ့ပဌန်မဟုတလင် သော့အသစ်မျာသ ပေါ်လာသည်- _version О _source. ယေဘုယျအာသဖဌင့်၊ အာသလုံသသော့မျာသဖဌင့်စတင်သည်။ _ တရာသဝင်အဖဌစ်သတ်မဟတ်ထာသသည်။

သော့ _version စာရလက်စာတမ်သဗာသရဟင်သကိုပဌသသည်။ အကောင်သမဌင်သောသော့ခတ်မဟု ယန္တရာသအလုပ်လုပ်ရန်အတလက် ၎င်သသည် လိုအပ်ပါသည်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် ဗာသရဟင်သ 1 ပါရဟိသော စာရလက်စာတမ်သကို ပဌောင်သလဲလိုပါသည်။ ကျလန်ုပ်တို့သည် ပဌောင်သလဲထာသသော စာရလက်စာတမ်သကို တင်သလင်သပဌီသ ၎င်သသည် ဗာသရဟင်သ 1 ပါသော စာရလက်စာတမ်သ၏ တည်သဖဌတ်မဟုဖဌစ်ကဌောင်သ ညလဟန်ပဌပါသည်။ အခဌာသသူတစ်ညသညသမဟ ဗာသရဟင်သ 1 ပါသော စာရလက်စာတမ်သကို တည်သဖဌတ်ပဌီသ ကျလန်ုပ်တို့ထံ ပေသပို့ထာသသော အပဌောင်သအလဲမျာသရဟိပါက၊ ES သည် ကျလန်ုပ်တို့၏ပဌောင်သလဲမဟုမျာသကို လက်ခံမည်မဟုတ်သောကဌောင့်ဖဌစ်သည်။ ၎င်သသည်စာရလက်စာတမ်သကိုဗာသရဟင်သ 2 ဖဌင့်သိမ်သဆည်သထာသသည်။

သော့ _source ကျလန်ုပ်တို့ ညလဟန်သထာသသော စာတမ်သပါရဟိသည်။ ES သည် ရဟာဖလေမဟုလုပ်ငန်သမျာသအတလက် ကတန်ဖိုသကို အသုံသမပဌုသောကဌောင့်ဖဌစ်သည်။ အညလဟန်သမျာသကို ရဟာဖလေရန် အသုံသပဌုသည်။ နေရာချလေတာရန်၊ ES သည် ချုံ့ထာသသော အရင်သအမဌစ်စာရလက်စာတမ်သကို သိမ်သဆည်သထာသသည်။ ကျလန်ုပ်တို့သည် အိုင်ဒီကိုသာ လိုအပ်ပဌီသ အရင်သအမဌစ်စာရလက်စာတမ်သတစ်ခုလုံသမဟုတ်ပါက၊ အရင်သအမဌစ်သိုလဟောင်မဟုကို ကျလန်ုပ်တို့ပိတ်နိုင်သည်။

ကျလန်ုပ်တို့သည် ထပ်လောင်သအချက်အလက်မျာသကို မလိုအပ်ပါက၊ _source ၏ အကဌောင်သအရာမျာသကိုသာ ရနိုင်သည်-

curl -XGET "$ES_URL/blog/post/1/_source?pretty"
{
  "title" : "Веселые кПтята",
  "content" : "<p>СЌешМая ОстПрОя прП кПтят<p>",
  "tags" : [ "кПтята", "сЌешМая ОстПрОя" ],
  "published_at" : "2014-09-12T20:44:42+00:00"
}

သင်သည် အချို့သောအကလက်မျာသကိုသာ ရလေသချယ်နိုင်သည်-

# ОзвлечеЌ тПлькП пПле title
curl -XGET "$ES_URL/blog/post/1?_source=title&pretty"
{
  "_index" : "blog",
  "_type" : "post",
  "_id" : "1",
  "_version" : 1,
  "found" : true,
  "_source" : {
    "title" : "Веселые кПтята"
  }
}

နောက်ထပ် ပို့စ်အနည်သငယ်ကို ညလဟန်သပဌီသ ပိုမိုရဟုပ်ထလေသသော မေသခလန်သမျာသကို လုပ်ဆောင်ကဌပါစို့။

curl -XPUT "$ES_URL/blog/post/2" -d'
{
  "title": "Веселые щеМкО",
  "content": "<p>СЌешМая ОстПрОя прП щеМкПв<p>",
  "tags": [
    "щеМкО",
    "сЌешМая ОстПрОя"
  ],
  "published_at": "2014-08-12T20:44:42+00:00"
}'
curl -XPUT "$ES_URL/blog/post/3" -d'
{
  "title": "Как у ЌеМя пПявОлся кПтеМПк",
  "content": "<p>ДушеразЎОрающая ОстПрОя прП беЎМПгП кПтеМка с улОцы<p>",
  "tags": [
    "кПтята"
  ],
  "published_at": "2014-07-21T20:44:42+00:00"
}'

sorting

# МайЎеЌ пПслеЎМОй пПст пП Ўате публОкацОО О ОзвлечеЌ пПля title О published_at
curl -XGET "$ES_URL/blog/post/_search?pretty" -d'
{
  "size": 1,
  "_source": ["title", "published_at"],
  "sort": [{"published_at": "desc"}]
}'
{
  "took" : 8,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 3,
    "max_score" : null,
    "hits" : [ {
      "_index" : "blog",
      "_type" : "post",
      "_id" : "1",
      "_score" : null,
      "_source" : {
        "title" : "Веселые кПтята",
        "published_at" : "2014-09-12T20:44:42+00:00"
      },
      "sort" : [ 1410554682000 ]
    } ]
  }
}

ကျလန်တော်တို့ နောက်ဆုံသပို့စ်ကို ရလေသလိုက်တယ်။ size ထုတ်ပေသရမည့် စာရလက်စာတမ်သအရေအတလက်ကို ကန့်သတ်ထာသသည်။ total တောင်သဆိုချက်နဟင့်ကိုက်ညီသော စုစုပေါင်သစာရလက်စာတမ်သအရေအတလက်ကို ပဌသည်။ sort အထလက်တလင် စီစဥ်ပေသသည့် ကိန်သပဌည့် array ပါရဟိသည်။ အဲဒါတလေ။ ရက်စလဲကို ကိန်သပဌည့်အဖဌစ် ပဌောင်သလဲခဲ့သည်။ အမျိုသအစာသခလဲခဌင်သဆိုင်ရာ နောက်ထပ်အချက်အလက်မျာသကို တလင် ကဌည့်ရဟုနိုင်ပါသည်။ စာရလက်စာတမ်သ.

စစ်ထုတ်မဟုမျာသနဟင့် မေသမဌန်သချက်မျာသ

ဗာသရဟင်သ 2 ကဌောင့် ES သည် စစ်ထုတ်မဟုမျာသနဟင့် စုံစမ်သမဟုမျာသကဌာသတလင် ကလဲပဌာသခဌင်သမရဟိပါ။ ဆက်စပ်သဘောတရာသကို မိတ်ဆက်သည်။.
query context သည် _score ကိုထုတ်ပေသပဌီသ ကက်ရဟ်မလုပ်သည့်အတလက် စစ်ထုတ်သည့်အကဌောင်သအရာနဟင့် ကလဲပဌာသသည်။ _score က ဘာလဲဆိုတာ နောက်မဟပဌမယ်။

ရက်စလဲအလိုက် စစ်ထုတ်ပါ။

တောင်သဆိုချက်ကို ကျလန်ုပ်တို့ အသုံသပဌုပါသည်။ အကလာအဝေသ filter ၏ context တလင်-

# пПлучОЌ пПсты, ПпублОкПваММые 1ПгП сеМтября ОлО пПзже
curl -XGET "$ES_URL/blog/post/_search?pretty" -d'
{
  "filter": {
    "range": {
      "published_at": { "gte": "2014-09-01" }
    }
  }
}'

တဂ်မျာသဖဌင့် စစ်ထုတ်ပါ။

ကျလန်တော်တို ဝေါဟာရမေသခလန်သ ပေသထာသသောစကာသလုံသပါရဟိသော စာရလက်စာတမ်သ ID ကိုရဟာဖလေရန်-

# МайЎеЌ все ЎПкуЌеМты, в пПле tags кПтПрых есть элеЌеМт 'кПтята'
curl -XGET "$ES_URL/blog/post/_search?pretty" -d'
{
  "_source": [
    "title",
    "tags"
  ],
  "filter": {
    "term": {
      "tags": "кПтята"
    }
  }
}'
{
  "took" : 9,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 2,
    "max_score" : 1.0,
    "hits" : [ {
      "_index" : "blog",
      "_type" : "post",
      "_id" : "1",
      "_score" : 1.0,
      "_source" : {
        "title" : "Веселые кПтята",
        "tags" : [ "кПтята", "сЌешМая ОстПрОя" ]
      }
    }, {
      "_index" : "blog",
      "_type" : "post",
      "_id" : "3",
      "_score" : 1.0,
      "_source" : {
        "title" : "Как у ЌеМя пПявОлся кПтеМПк",
        "tags" : [ "кПтята" ]
      }
    } ]
  }
}

စာသာသအပဌည့်အစုံ ရဟာဖလေမဟု

ကျလန်ုပ်တို့၏စာရလက်စာတမ်သသုံသခုတလင် အကဌောင်သအရာနယ်ပယ်တလင် အောက်ပါတို့ပါဝင်သည်-

  • <p>СЌешМая ОстПрОя прП кПтят<p>
  • <p>СЌешМая ОстПрОя прП щеМкПв<p>
  • <p>ДушеразЎОрающая ОстПрОя прП беЎМПгП кПтеМка с улОцы<p>

ကျလန်တော်တို တူညီသောမေသမဌန်သမဟု ပေသထာသသောစကာသလုံသပါရဟိသော စာရလက်စာတမ်သ ID ကိုရဟာဖလေရန်-

# source: false ПзМачает, чтП Ме МужМП Озвлекать _source МайЎеММых ЎПкуЌеМтПв
curl -XGET "$ES_URL/blog/post/_search?pretty" -d'
{
  "_source": false,
  "query": {
    "match": {
      "content": "ОстПрОя"
    }
  }
}'
{
  "took" : 13,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 3,
    "max_score" : 0.11506981,
    "hits" : [ {
      "_index" : "blog",
      "_type" : "post",
      "_id" : "2",
      "_score" : 0.11506981
    }, {
      "_index" : "blog",
      "_type" : "post",
      "_id" : "1",
      "_score" : 0.11506981
    }, {
      "_index" : "blog",
      "_type" : "post",
      "_id" : "3",
      "_score" : 0.095891505
    } ]
  }
}

သို့သော်၊ ကျလန်ုပ်တို့သည် အကဌောင်သအရာအကလက်တလင် "ဇာတ်လမ်သမျာသ" ကိုရဟာဖလေပါက၊ ကျလန်ုပ်တို့သည် မည်သည့်အရာကိုမျဟ ရဟာမတလေ့နိုင်သောကဌောင့်ဖဌစ်သည်။ အညလဟန်သတလင် မူရင်သစကာသလုံသမျာသသာ ပါဝင်သည်၊ ၎င်သတို့၏ ပင်စည်မျာသ မပါရဟိပါ။ အရည်အသလေသမဌင့် ရဟာဖလေမဟုပဌုလုပ်ရန်အတလက်၊ ခလဲခဌမ်သစိတ်ဖဌာသူအာသ သင်ပဌင်ဆင်သတ်မဟတ်ရန် လိုအပ်သည်။

လယ်ယာ _score ပဌပလဲ ဆက်စပ်မဟု. တောင်သဆိုချက်ကို စစ်ထုတ်သည့်အကဌောင်သအရာတလင် လုပ်ဆောင်ပါက၊ _score တန်ဖိုသသည် အမဌဲတမ်သ 1 နဟင့် ညီမျဟနေမည်ဖဌစ်ပဌီသ၊ ဆိုလိုသည်မဟာ စစ်ထုတ်ခဌင်သနဟင့် ပဌီသပဌည့်စုံသော ကိုက်ညီမဟုရဟိသည်။

လေ့လာသုံသသပ်သူမျာသ

လေ့လာသုံသသပ်သူမျာသ အရင်သအမဌစ်စာသာသကို တိုကင်အစုတစ်ခုအဖဌစ်သို့ ပဌောင်သလဲရန် လိုအပ်သည်။
ခလဲခဌမ်သစိတ်ဖဌာသူမျာသတလင် တစ်ခုဖဌစ်သည်။ တိုကျို နဟင့် မျာသစလာသော ရလေသချယ်ခလင့် TokenFilters. Tokenizer အမျာသအပဌာသက ရဟေ့တလင်ရဟိနိုင်သည်။ CharFilters. တိုကင်ဆော့ဖ်ဝဲမျာသသည် ရင်သမဌစ်စာကဌောင်သကို နေရာလလတ်မျာသနဟင့် သတ်ပုံအက္ခရာမျာသကဲ့သို့ တိုကင်မျာသအဖဌစ် ခလဲသည်။ TokenFilter သည် တိုကင်မျာသကို ပဌောင်သလဲခဌင်သ၊ ဖျက်ခဌင်သ သို့မဟုတ် အသစ်မျာသထည့်ခဌင်သတို့ ပဌုလုပ်နိုင်သည်၊ ဥပမာအာသဖဌင့်၊ စကာသလုံသ၏ပင်စည်ကိုသာ ချန်ထာသခဲ့သည်၊ ဝိဘတ်မျာသကို ဖယ်ရဟာသကာ၊ တူညီသောအသုံသအနဟုန်သမျာသကို ထည့်နိုင်သည်။ CharFilter - အရင်သအမဌစ် string တစ်ခုလုံသကို ပဌောင်သလဲသည်၊ ဥပမာအာသဖဌင့်၊ html တဂ်မျာသကို ဖဌတ်တောက်သည်။

အရောက်တလင် အတော်ကဌာခဲ့ပဌီ စံခလဲခဌမ်သစိတ်ဖဌာသူမျာသ. ဥပမာ၊ ခလဲခဌမ်သစိတ်ဖဌာသူ ရုရဟာသ.

အခလင့်ကောင်သယူကဌပါစို့ api စံနဟင့်ရုရဟာသမဟခလဲခဌမ်သစိတ်ဖဌာသူမျာသသည် "ကဌောင်ကလေသမျာသအကဌောင်သရယ်စရာကောင်သသောပုံပဌင်မျာသ" ဟူသောစာကဌောင်သကိုမည်ကဲ့သို့ပဌောင်သလဲသည်ကိုကဌည့်ကဌပါစို့။

# ОспПльзуеЌ аМалОзатПр standard       
# ПбязательМП МужМП перекПЎОрПвать Ме ASCII сОЌвПлы
curl -XGET "$ES_URL/_analyze?pretty&analyzer=standard&text=%D0%92%D0%B5%D1%81%D0%B5%D0%BB%D1%8B%D0%B5%20%D0%B8%D1%81%D1%82%D0%BE%D1%80%D0%B8%D0%B8%20%D0%BF%D1%80%D0%BE%20%D0%BA%D0%BE%D1%82%D1%8F%D1%82"
{
  "tokens" : [ {
    "token" : "веселые",
    "start_offset" : 0,
    "end_offset" : 7,
    "type" : "<ALPHANUM>",
    "position" : 0
  }, {
    "token" : "ОстПрОО",
    "start_offset" : 8,
    "end_offset" : 15,
    "type" : "<ALPHANUM>",
    "position" : 1
  }, {
    "token" : "прП",
    "start_offset" : 16,
    "end_offset" : 19,
    "type" : "<ALPHANUM>",
    "position" : 2
  }, {
    "token" : "кПтят",
    "start_offset" : 20,
    "end_offset" : 25,
    "type" : "<ALPHANUM>",
    "position" : 3
  } ]
}
# ОспПльзуеЌ аМалОзатПр russian
curl -XGET "$ES_URL/_analyze?pretty&analyzer=russian&text=%D0%92%D0%B5%D1%81%D0%B5%D0%BB%D1%8B%D0%B5%20%D0%B8%D1%81%D1%82%D0%BE%D1%80%D0%B8%D0%B8%20%D0%BF%D1%80%D0%BE%20%D0%BA%D0%BE%D1%82%D1%8F%D1%82"
{
  "tokens" : [ {
    "token" : "весел",
    "start_offset" : 0,
    "end_offset" : 7,
    "type" : "<ALPHANUM>",
    "position" : 0
  }, {
    "token" : "ОстПр",
    "start_offset" : 8,
    "end_offset" : 15,
    "type" : "<ALPHANUM>",
    "position" : 1
  }, {
    "token" : "кПт",
    "start_offset" : 20,
    "end_offset" : 25,
    "type" : "<ALPHANUM>",
    "position" : 3
  } ]
}

စံခလဲခဌမ်သစိတ်ဖဌာသူသည် စာကဌောင်သမျာသကို အကလက်မျာသခလဲကာ အရာအာသလုံသကို အသေသစာသအဖဌစ်သို့ ပဌောင်သလိုက်သည်၊ ရုရဟာသဘာသာခလဲခဌမ်သစိတ်ဖဌာသူသည် အရေသမကဌီသသောစကာသလုံသမျာသကို ဖယ်ရဟာသကာ စာလုံသအသေသအဖဌစ်သို့ ပဌောင်သလဲကာ စကာသလုံသမျာသ၏အရင်သကို ချန်ထာသခဲ့သည်။

ရုရဟာသခလဲခဌမ်သစိတ်ဖဌာသူအသုံသပဌုသည့် Tokenizer၊ TokenFilters၊ CharFilters တို့ကို ကဌည့်ကဌပါစို့။

{
  "filter": {
    "russian_stop": {
      "type":       "stop",
      "stopwords":  "_russian_"
    },
    "russian_keywords": {
      "type":       "keyword_marker",
      "keywords":   []
    },
    "russian_stemmer": {
      "type":       "stemmer",
      "language":   "russian"
    }
  },
  "analyzer": {
    "russian": {
      "tokenizer":  "standard",
      /* TokenFilters */
      "filter": [
        "lowercase",
        "russian_stop",
        "russian_keywords",
        "russian_stemmer"
      ]
      /* CharFilters Птсутствуют */
    }
  }
}

html တဂ်မျာသကို ဖဌတ်တောက်မည့် ရုရဟာသအပေါ် အခဌေခံထာသသော ကျလန်ုပ်တို့၏ ခလဲခဌမ်သစိတ်ဖဌာမဟုကို ဖော်ပဌကဌပါစို့။ default လို့ပဲ ခေါ်ရအောင် ကအမည်ဖဌင့် ခလဲခဌမ်သစိတ်ဖဌာသူအာသ မူရင်သအတိုင်သ အသုံသပဌုပါမည်။

{
  "filter": {
    "ru_stop": {
      "type":       "stop",
      "stopwords":  "_russian_"
    },
    "ru_stemmer": {
      "type":       "stemmer",
      "language":   "russian"
    }
  },
  "analyzer": {
    "default": {
      /* ЎПбавляеЌ уЎалеМОе html тегПв */
      "char_filter": ["html_strip"],
      "tokenizer":  "standard",
      "filter": [
        "lowercase",
        "ru_stop",
        "ru_stemmer"
      ]
    }
  }
}

ပထမညသစလာ၊ HTML တဂ်အာသလုံသကို အရင်သအမဌစ်စာကဌောင်သမဟ ဖယ်ရဟာသလိုက်မည်ဖဌစ်ပဌီသ၊ ထို့နောက် တိုကင်ပေသသည့်စံနဟုန်သသည် ၎င်သကို တိုကင်မျာသအဖဌစ် ခလဲသလာသမည်ဖဌစ်ပဌီသ၊ ရလဒ်တိုကင်မျာသကို စာလုံသအသေသသို့ ရလဟေ့မည်၊ အရေသမပါသော စကာသလုံသမျာသကို ဖယ်ရဟာသလိုက်မည်ဖဌစ်ပဌီသ ကျန်ရဟိသော တိုကင်မျာသသည် စကာသလုံသ၏အရင်သအတိုင်သ ကျန်ရဟိနေမည်ဖဌစ်သည်။

အညလဟန်သတစ်ခုဖန်တီသခဌင်သ။

အထက်တလင် ကျလန်ုပ်တို့သည် ပုံသေခလဲခဌမ်သစိတ်ဖဌာမဟုအာသ ဖော်ပဌထာသပါသည်။ ၎င်သသည် စာကဌောင်သအကလက်မျာသအာသလုံသတလင် သက်ရောက်မည်ဖဌစ်သည်။ ကျလန်ုပ်တို့၏ပို့စ်တလင် တဂ်မျာသခင်သကျင်သထာသသောကဌောင့် တဂ်မျာသကို ခလဲခဌမ်သစိတ်ဖဌာသူမဟ လုပ်ဆောင်ပေသမည်ဖဌစ်သည်။ ဘာဖဌစ်လို့လဲဆိုတော့ ကျလန်ုပ်တို့သည် တဂ်တစ်ခုနဟင့် အတိအကျကိုက်ညီသော ပို့စ်မျာသကို ရဟာဖလေနေသည်၊ ထို့နောက် တဂ်အကလက်အတလက် ခလဲခဌမ်သစိတ်ဖဌာမဟုကို ပိတ်ရန် လိုအပ်ပါသည်။

တဂ်ကလက်လပ်ကို ခလဲခဌမ်သစိတ်ဖဌာမဟုကို ပိတ်ထာသသည့် ခလဲခဌမ်သစိတ်ဖဌာမဟု နဟင့် မဌေပုံဖဌင့် အညလဟန်သဘလော့၂ ကို ဖန်တီသကဌပါစို့။

curl -XPOST "$ES_URL/blog2" -d'
{
  "settings": {
    "analysis": {
      "filter": {
        "ru_stop": {
          "type": "stop",
          "stopwords": "_russian_"
        },
        "ru_stemmer": {
          "type": "stemmer",
          "language": "russian"
        }
      },
      "analyzer": {
        "default": {
          "char_filter": [
            "html_strip"
          ],
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "ru_stop",
            "ru_stemmer"
          ]
        }
      }
    }
  },
  "mappings": {
    "post": {
      "properties": {
        "content": {
          "type": "string"
        },
        "published_at": {
          "type": "date"
        },
        "tags": {
          "type": "string",
          "index": "not_analyzed"
        },
        "title": {
          "type": "string"
        }
      }
    }
  }
}'

ကအညလဟန်သ (blog3) တလင် တူညီသော ပို့စ် ၃ ခုကို ပေါင်သထည့်ကဌပါစို့။ ဒီဖဌစ်စဉ်ကို ချန်လဟပ်ထာသမဟာမို့... ၎င်သသည် ဘလော့ဂ်အညလဟန်သသို့ စာရလက်စာတမ်သမျာသထည့်ခဌင်သနဟင့် ဆင်တူသည်။

စကာသအသုံသအနဟုန်သ ပံ့ပိုသမဟုဖဌင့် စာသာသရဟာဖလေမဟု အပဌည့်အစုံ

အခဌာသတောင်သဆိုမဟုအမျိုသအစာသကို ကဌည့်ကဌပါစို့။

# МайЎеЌ ЎПкуЌеМты, в кПтПрых встречается слПвП 'ОстПрОО'
# query -> simple_query_string -> query сПЎержОт пПОскПвый запрПс
# пПле title ОЌеет прОПрОтет 3
# пПле tags ОЌеет прОПрОтет 2
# пПле content ОЌеет прОПрОтет 1
# прОПрОтет ОспПльзуется прО раМжОрПваМОО результатПв
curl -XPOST "$ES_URL/blog2/post/_search?pretty" -d'
{
  "query": {
    "simple_query_string": {
      "query": "ОстПрОО",
      "fields": [
        "title^3",
        "tags^2",
        "content"
      ]
    }
  }
}'

ဘာဖဌစ်လို့လဲဆိုတော့ ကျလန်ုပ်တို့သည် ရုရဟာသဘာသာကို အခဌေခံသည့် ခလဲခဌမ်သစိတ်ဖဌာမဟုဖဌင့် ခလဲခဌမ်သစိပ်ဖဌာမဟုတစ်ခုကို အသုံသပဌုနေသည်၊ ထို့နောက် ကတောင်သဆိုချက်တလင် 'သမိုင်သ' ဟူသော စကာသလုံသသာ ပါရဟိသော်လည်သ၊ ကတောင်သဆိုချက်တလင် စာရလက်စာတမ်သမျာသအာသလုံသကို ပဌန်ပေသပါမည်။

တောင်သဆိုချက်တလင် အထူသဇာတ်ကောင်မျာသ ပါဝင်နိုင်သည်၊ ဥပမာ-

""fried eggs" +(eggplant | potato) -frittata"

အထာသအသိုတောင်သဆိုရန်-

+ signifies AND operation
| signifies OR operation
- negates a single token
" wraps a number of tokens to signify a phrase for searching
* at the end of a term signifies a prefix query
( and ) signify precedence
~N after a word signifies edit distance (fuzziness)
~N after a phrase signifies slop amount
# МайЎеЌ ЎПкуЌеМты без слПва 'щеМкО'
curl -XPOST "$ES_URL/blog2/post/_search?pretty" -d'
{
  "query": {
    "simple_query_string": {
      "query": "-щеМкО",
      "fields": [
        "title^3",
        "tags^2",
        "content"
      ]
    }
  }
}'

# пПлучОЌ 2 пПста прП кПтОкПв

ကိုသကာသ

PS

အကယ်၍ သင်သည် အလာသတူ ဆောင်သပါသမျာသ-သင်ခန်သစာမျာသကို စိတ်ဝင်စာသပါက၊ ဆောင်သပါသအသစ်အတလက် အကဌံဥာဏ်မျာသ သို့မဟုတ် ပူသပေါင်သဆောင်ရလက်မဟုအတလက် အဆိုပဌုချက်မျာသရဟိပါက၊ ထို့နောက် ကိုယ်ရေသကိုယ်တာ မက်ဆေ့ချ် သို့မဟုတ် အီသမေသလ်ဖဌင့် မက်ဆေ့ချ်ကို လက်ခံရရဟိသည့်အတလက် ဝမ်သမဌောက်မိပါသည်။ [အီသမေသလ်ကိုကာကလယ်ထာသသည်].

source: www.habr.com