我正在尝试使用elasticsearch实现一个文本搜索应用程序,它执行“以a a a开始”搜索(如match_phrase_prefix),但我还需要在我的分析器上应用一些过滤器,如“stemmer”和“stop”。
下面是我要搜索的示例文档:
1.棕色狐狸跑得很快。
1.看!棕色的狐狸跑得很快。
1.棕色的狐狸比黄色的狐狸跑得快。
而我的目标是,当我搜索“棕色狐狸”时,应用程序应该返回我1)和3)
我尝试了关键字作为我的tokeniser与过滤器的“stemmer”和“stop”,它只工作的最后一个字,我的文件,例如:“棕色的狐狸跑得很快”将变成“棕色的狐狸跑得很快”,但我需要把整个句子符号化。
1条答案
按热度按时间tquggr8v1#
您需要应用标记化,这样您将对句子中的每个单词应用词干分析。
在
settings.analysis.analyzer
中,您可以添加以下自定义英语分析器:然后,您可以在
mappings
中的字段定义中添加一个子字段,如下所示:然后您可以这样查询:
这将匹配1、3。前缀查询确保您只从值的开头进行匹配。但当您使用
brown foxes
进行查询时,您也将得到1。这就是词干的强大之处。