带有雪球分析器的Elasticsearch仅返回词干的结果

con*_*t47 6 elasticsearch

我在查询字符串搜索中使用雪球分析器......就像这样

   "query" : {
      "query_string" : {
        "query" : the-query-string-goes-here,
        "default_operator" : "AND",
        "analyzer" : "snowball"
      }
    }
Run Code Online (Sandbox Code Playgroud)

这实际上有效,但它做了一些奇怪的事情......寻找"战斗"将返回"战斗"的结果,但忽略"战斗"的结果.搜索"船员"将返回"船员"但不是"船员"的结果,搜索"船员"也会忽略"船员"的结果......

有谁知道发生了什么?

jav*_*nna 11

在索引时和查询时应用词干时,词干是有意义的.现在,您在查询时应用它,以便搜索作为查询一部分的单词的词干.但我想索引不包含词干,因为你没有在索引时应用词干.您实际上是在该_all字段上搜索,因为您既未在查询中指定任何字段名称,也未使用query_string支持的default_field(或fields)属性._all默认情况下,该字段使用StandardAnalyzer.

有不同的方法来解决这个问题.我个人会决定您要在查询中搜索的一组字段,并将其应用于映射中的字段.之后,您不需要在查询中指定分析器,因为将使用您要搜索的字段的已配置分析器.

如果答案足够清楚,请告诉我.