elasticsearch,Javascript,Node.js,elasticsearch" /> elasticsearch,Javascript,Node.js,elasticsearch" />

Javascript 词干搜索

Javascript 词干搜索,javascript,node.js,elasticsearch,Javascript,Node.js,elasticsearch,我已经成功地为elasticsearch实现了词干分析,因此当我搜索“代码”时,我碰到了“代码”和“编码”等 当我试图在查询中使用“不得”字段时,问题就出现了。当我在“不得”字段中包含“代码”时,这很好,并且我仍然会得到预期的结果,但是当我搜索“代码”时,我不会得到任何结果,即使有文档中肯定有“代码”一词 我的质询如下: for(i = 0; i < exclude_words.length; i++) { must_not.push({term:{text:exclude_words

我已经成功地为elasticsearch实现了词干分析,因此当我搜索“代码”时,我碰到了“代码”和“编码”等

当我试图在查询中使用“不得”字段时,问题就出现了。当我在“不得”字段中包含“代码”时,这很好,并且我仍然会得到预期的结果,但是当我搜索“代码”时,我不会得到任何结果,即使有文档中肯定有“代码”一词

我的质询如下:

for(i = 0; i < exclude_words.length; i++)
{
  must_not.push({term:{text:exclude_words[i].toLowerCase()}});
}
query = {
  "filtered": {
    "query": {
      "dis_max": {
        "queries": [
          {"match": {"text": term}},
          {"match": {"title": term}}
        ]
      }
    },
    "filter": {
      "bool": {
        "must_not": must_not
      }
    } 
  }
}
文本字段具有以下映射:

"text": {
    "type": "string",
    "analyzer": "stopword_analyzer"
  }
当我在“不得”字段中包含“代码”时,这很好,我仍然可以得到预期的结果

它不是关于
must\u not
而是关于在
must\u not
中使用的
术语
过滤器。
术语
过滤器将获取您的搜索文本-“code”或“code”或其他内容,并使用精确的值进行过滤

但是,您正在使用的分析器正在更改被索引的术语。 例如,如果您想索引“编码”,实际上索引“编码”中将包含(作为反向索引中的术语)。请记住,
term
实际上会搜索精确的值。因此,如果您搜索“代码”,它将不会被找到,因为您文档中的单个术语是“代码”

我建议尝试
匹配
而不是
中的
术语
,因为这将在搜索时使用分析器。大概是这样的:

  "filter": {
    "bool": {
      "must_not": [
        {
          "query": {
            "match": {
              "text": "codes"
            }
          }
        },
        {
          "query": {
            "match": {
              "text": "coding"
            }
          }
        }
      ]
    }
  }
当我在“不得”字段中包含“代码”时,这很好,我仍然可以得到预期的结果

它不是关于
must\u not
而是关于在
must\u not
中使用的
术语
过滤器。
术语
过滤器将获取您的搜索文本-“code”或“code”或其他内容,并使用精确的值进行过滤

但是,您正在使用的分析器正在更改被索引的术语。 例如,如果您想索引“编码”,实际上索引“编码”中将包含(作为反向索引中的术语)。请记住,
term
实际上会搜索精确的值。因此,如果您搜索“代码”,它将不会被找到,因为您文档中的单个术语是“代码”

我建议尝试
匹配
而不是
中的
术语
,因为这将在搜索时使用分析器。大概是这样的:

  "filter": {
    "bool": {
      "must_not": [
        {
          "query": {
            "match": {
              "text": "codes"
            }
          }
        },
        {
          "query": {
            "match": {
              "text": "coding"
            }
          }
        }
      ]
    }
  }

文本
字段的映射是什么?用它更新了问题,谢谢!
文本
字段的映射是什么?用它更新了问题,谢谢!完美的作品很有魅力,非常感谢你,你帮了我很多工作!!!完美的作品很有魅力,非常感谢你,你帮了我很多工作!!!