2013-10-10 48 views
0

我是新來的elasticsearch,我試圖配置同義詞,但它不按預期工作。elasticsearch多個詞synonms不工作

我已經在我的領域 1)趙彤鉛,模塊負責人,軟件工程師,高級軟件工程師

我想,如果我搜索TL那麼它應該retun「技術領先」或「TL」 以下數據然而,它將我的「技術主管」和「模塊主管」歸還給我,因爲主管在tme索引處被標記。

你能幫我解決這個問題,以確切的設置。

我已經看到索引時間和搜索時間標記化,但無法理解這一點。

synonyms.txt:

TL,TL =>技術主管

SE,SE =>軟件工程師

SSE =>高級軟件工程師

映射文件:

{ 
    "settings": { 
    "index": { 
     "analysis": { 
     "analyzer": { 
      "synonym": { 
      "tokenizer": "whitespace", 
      "filter": [ 
       "synonym" 
      ] 
      } 
     }, 
     "filter": { 
      "synonym": { 
      "type": "synonym", 
      "synonyms_path": "synonyms.txt" 
      } 
     } 
     } 
    } 
    }, 
    "mappings": { 
    "tweet": { 
     "properties": { 
     "Domain": { 
      "type": "string", 
      "analyzer": "synonym" 
     }, 
     "Designation": { 
      "analyzer": "synonym", 
      "type": "string" 
     }, 
     "City": { 
      "type": "string", 
      "analyzer": "synonym" 
     } 
     } 
    } 
    } 
} 

回答

0

你的代幣在這裏完全相同,所以你有這個部分。你需要做的是確保你做的是「AND」匹配而不是「或」,因爲它看起來只是匹配任何單詞而不是全部。

退房您的令牌:

localhost:9200/test/_analyze?analyzer=synonym&text=technical lead 
localhost:9200/test/_analyze?analyzer=synonym&text=tl 

和查詢

{ 
    "query": { 
     "match": { 
     "domain": { 
      "query": "tl", 
      "operator": "and" 
     } 
     } 
    } 
} 

通常你希望你的搜索和索引分析儀是相同的。但是,有許多先進的例子,這是不可取的。但是,在使用同義詞的情況下,當您打開擴展時,通常不希望在一個或另一箇中使用同義詞。 ie tl,technical lead

但是,由於您使用的是=>類型的同義詞,因此所有單詞都將轉換爲右側的單詞,而不是爲每個單詞創建一組標記之間的逗號。