1.在config/目录下创建文件

analysis/synonym.txt
内容如下

  1. 搜房,房天下
  2. 成交均价,成交单价,房价,售价
  3. 保障房,经济适用房,配套商品房,动迁房,廉租房
  4. 出租,租赁
  5. 买卖,销售
  6. 克而瑞,CRAC
  7. 耐克=>鞋子

2.创建索引时分析器配置过滤

  1. {
  2. "settings": {
  3. "index": {
  4. "max_result_window": 1000000
  5. },
  6. "analysis": {
  7. "analyzer": {
  8. "ik_max_word": {
  9. "tokenizer": "ik_max_word",
  10. "filter": [
  11. "lowercase",
  12. "asciifolding",
  13. "my_synonym_filter"
  14. ]
  15. }
  16. },
  17. "filter": {
  18. "my_synonym_filter": {
  19. "type": "synonym",
  20. "synonyms_path": "analysis/synonym.txt"
  21. }
  22. }
  23. }
  24. },
  25. "mappings": {
  26. "properties": {
  27. "goodsName": {
  28. "type": "text",
  29. "analyzer": "ik_max_word"
  30. }
  31. }
  32. }
  33. }

因为“克而瑞”和“CRAC”是近义词,所以在搜索结果中既有“克而瑞”,也有“CRAC”

3.同义词配置详解

一行一个同义词,其中 AA,BB=>CC 这种写法会将AA与BB都映射到CC,然后只对CC进行索引;而 AA,BB 这种当文档中存在AA时,不仅仅会索引AA还会索引BB;这里需要注意的是如果文件中一个词存在于多行,那么对应的近义词会累计,如:

  1. 小米,小米手机
  2. 小米,小米电脑

此时“小米”对应的近义词是“小米手机”,“小米电脑”,但如果是输入“小米手机”,那么近义词只有“小米”.