bool / filter查询可以自动忽略查询中的停用词吗?

时间:2017-09-02 10:10:12

标签: elasticsearch lucene

我有一个自定义分析器忽略常见的词,如“the”,“a”,“an”,“on”:

  {
    "analysis": {
      "filter": {
        "my_stopwords": {
          "type": "stop",
          "stopwords": [
            "the",
            "a",
            "an",
            "on"
          ]
        }
      },
      "analyzer": {
        "customAnalyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "my_stopwords"
          ]
        }
      }
    }
  }

这是一个名为“thisField”的字段,它使用存储短文本的customAnalyzer:

"thisField": {
            "type": "text",
            "norms": false,
            "analyzer": "customAnalyzer"
 }

一些示例文档:

[  
   {
      id:1,
      thisField:"the cat is on the table"
   },
   {
      id:2,
      thisField:"expensive table"
   }
]

我的过滤查询需要在thisField中逐字搜索“在桌面上”。我无法使用以下查询显示任何结果。我发现这是因为查询中包含“on”。 elasticsearch中是否有任何设置会使筛选后的查询自动忽略查询中的任何停用词?

"query": {
  "bool": {
    "filter": {
      "bool": {
        "must": [
          {
            "term": {
              "thisField": "on"
            }
          },
          {
            "term": {
              "thisField": "table"
            }
          }
        ]
      }
    }
  }

0 个答案:

没有答案