弹性搜索中不需要的停用词

时间:2018-03-07 00:23:31

标签: elasticsearch

我正在使用弹性搜索6.这是查询

PUT /semtesttest
{
    "settings": {
        "index" : {
            "analysis" : {
              "filter": {
                "my_stop": {
                    "type": "stop",
                    "stopwords_path": "analysis1/stopwords.csv"
                  },
                 "synonym" : {
                        "type" : "synonym",
                        "synonyms_path" : "analysis1/synonym.txt"
                    }
                },
                "analyzer" : {
                    "my_analyzer" : {
                        "tokenizer" : "standard",
                        "filter" : ["synonym","my_stop"]
                    }
                }
            }
        }
    },
    "mappings": {
      "all_questions": {
         "dynamic": "strict",
          "properties": {
            "kbaid":{
              "type": "integer"
            },
            "answer":{
              "type": "text"
            },
            "question":    {
              "type": "text",
              "analyzer": "my_analyzer"
            }
          }
        }
    }
}

PUT /semtesttest/all_questions/1
{
  "question":"this is hippie"
}

GET /semtesttest/all_questions/_search
{
    "query":{
      "fuzzy":{"question":{"value":"hippie","fuzziness":2}}
    }
}

GET /semtesttest/all_questions/_search
{
    "query":{
      "fuzzy":{"question":{"value":"this is","fuzziness":2}}
    }
}
<{1>}中的

synonym.txt
<{1>}中的

this, that, money => sainai

第一个get(&#39; hippie&#39;)返回空 只有第二次获取(&#39;这是&#39;)返回结果

有什么问题?看起来像停止词&#34;这是&#34;在第一个查询中被过滤,但是我已明确指定了我的停用词?

1 个答案:

答案 0 :(得分:0)

fuzzy是一个术语查询。它不会分析输入,因此您的查询正在寻找确切的术语this is(应用一些模糊的乐趣)。

因此,您要么想要根据这两个术语构建查询,要么使用full text query代替。如果模糊性很重要,我认为唯一的全文查询是match

GET /semtesttest/all_questions/_search?pretty 
{
    "query":{
      "match":{"question":{"query":"this is","fuzziness":2}}
    }
}

如果匹配词组很重要,您可能需要查看此answer并使用span次查询。

这也可能对您有所帮助,因此您可以看到您的分析仪的使用方式:

GET /semtesttest/_analyze?analyzer=my_analyzer&field=question&text=this is