elasticsearch中的子串和相似性匹配

时间:2014-01-08 04:44:21

标签: elasticsearch

我正在学习使用elastisearch作为数据库查询的替代方法,我无法对构建的索引执行子串匹配。 我用来创建索引的映射是

        "mappings" : {
           "user" : {
             "properties" : {
                "name" : {"type": "string"},
                "specialty" : {"type": "string" ,"analyzer":"snowball"},
                "address : {"type": "string" ,"analyzer":"snowball"}
              }
           }
          }

我正在编制索引的文件是

    {
      "name" : "John Doe",
      "speciality": ["pediatrician","Child Doctor"],
      "address": ["#123 park road Abbeyville","#423 park road AbbeyTown" ]
     }

当我执行像

这样的搜索时
curl -XGET localhost:9200/test/user/_search?q=speciality:pediatrician

我得到了正确的文件

然而,当我搜索

这样的字符串时
curl -XGET localhost:9200/test/user/_search?q=speciality:pedia
curl -XGET localhost:9200/test/user/_search?q=speciality:pediatricians

未检索到任何结果

P.S我知道外卡可用于匹配,但我需要能够根据用户输入搜索整个单词和部分单词,以便返回最相关的文档。

1 个答案:

答案 0 :(得分:0)

您是否在更改映射后尝试重新编制索引?同时尝试将搜索分析器设置为在设置中滚雪球。

<强>更新

您可以进行外卡搜索。最好单独追踪外卡搜索,而不是前导和尾随外卡搜索。

curl -XGET localhost:9200/test/user/_search?q=speciality:pedia*
curl -XGET localhost:9200/test/user/_search?q=speciality:pediatricians*