我们遇到了ElasticSearch跳过术语“no”的问题,因此我们想出了一个玩具数据集,以便更轻松地进行故障排除。以下是总共6个文件的玩具收藏(在Sense chrome插件上显示):
以下是我们遇到问题的查询。我们希望它返回所有6个文档,其中包含4个方面的“健康”字段,该字段应为 [不,是,地狱否,可能没有] 。
相反,只返回了6个文件中的4个,缺少的文件肉和鸡蛋,是那些“健康”==“否”的文件(不区分大小写)。
...而不是4个方面我们只有3个回来(“没有”缺失)。另请注意,“可能”已退回,而非“可能不是”。同样,只返回“地狱”,而不是“地狱没有”。
我们想出了这些例子来说明问题而不是冒犯任何人的饮食选择!非常感谢提前!!!
编辑:我们没有对映射做任何想象(我们在真实系统中做过)。它只是不会“开箱即用”。
答案 0 :(得分:1)
听起来你遇到了停顿词。 “不”是一个非常典型的英语单词,它被认为是非常常见的单词,通常对搜索没用,所以在分析过程中它们被删除了。出于这个原因,ElasticSearch实际上已将其默认行为更改为使用空停止字集。停止言语可能会有所帮助,但如果你不期待它,那只会令人困惑。
您可以自定义分析仪中使用的停用词集(例如StandardAnalyzer)。
ElasticSearch的人也有一篇关于停用词的非常有趣的文章:"Stop Stopping Stop Words: a Look at Common Terms Query"(很明显,常见术语查询可能不适合您的需求,但至少前几节应该有助于描述问题更好)。