1. 程式人生 > 實用技巧 >elasticsearch 同義詞權重搜尋

elasticsearch 同義詞權重搜尋

問題描述:

在配置同義詞搜尋的時候,如何區分權重.比如,同義詞檔案中配置"杯子,保溫杯",使用者在搜尋杯子的時候,想讓關於杯子的資料展示在前面,或者輸入保溫杯的時候,想讓保溫杯的資料展示在前面?

PUT /synonym_test/
{
  "settings": {
    "analysis": {
      "analyzer": {
        "no_synonyms": {
          "type": "custom",
          "tokenizer": "ik_smart"
        },
        "synonyms": {
         
"type": "custom", "tokenizer": "ik_smart", "filter": [ "synonym" ] } }, "filter": { "synonym": { "type": "synonym", "synonyms_path": "analysis/synonym.txt" } } } }, "mappings": { "properties
": { "syn": { "type": "text", "analyzer": "synonyms" }, "no_syn": { "type": "text", "analyzer": "no_synonyms" } } } } POST synonym_test/_doc/1 { "syn": "江蘇潮流杯子價格實惠", "no_syn": "江蘇潮流杯子價格實惠" } POST synonym_test/_doc/2 { "syn": "烏魯木齊潮流杯子樣式絕美
", "no_syn": "烏魯木齊潮流杯子樣式絕美" } POST synonym_test/_doc/3 { "syn": "Momscook 潮流 保溫杯", "no_syn": "Momscook 潮流 保溫杯" } POST synonym_test/_doc/4 { "syn": "上海潮流保溫杯好用", "no_syn": "上海潮流保溫杯好用" } GET /synonym_test/_search {"query":{"bool":{"should":[{"match":{"syn":{"query":"杯子","boost":10}}},{"match":{"no_syn":"杯子"}}]}}}




GET /synonym_test/_search
{"query":{"bool":{"should":[{"match":{"syn":{"query":"保溫杯","boost":10}}},{"match":{"no_syn":"保溫杯"}}]}}}