【发布时间】:2020-10-06 10:09:00
【问题描述】:
基于this 答案(第一个选项)我创建了这个索引:
'settings' => array(
'analysis' => array(
'analyzer' => array(
'stop_analyzer' => array(
'type' => 'custom',
'tokenizer' => 'standard',
'filter' => array(
'lowercase',
'english_stop'
)
)
),
"filter" => array(
"english_stop" => array(
"type" => "stop",
"stopwords" => "_english_"
)
)
)
),
'mappings' => array(
'properties' => array(
'texts' => array(
'type' => 'completion',
"analyzer" => "stop_analyzer",
"search_analyzer" => "stop_analyzer",
'preserve_position_increments' => false
),
),
)
当我开始使用或不使用停用词的建议搜索时,这非常有效。但是,例如,当我的索引中有这个:This is the text,并且我搜索text 时,我不会得到任何结果,那么正确的方法是什么?我宁愿不使用 N-gram。
我的搜索查询:
'suggest' => array(
'suggestion' => array(
'prefix'=> 'text',
'completion' => array(
'field' => 'texts'
)
)
)
【问题讨论】:
-
您有机会浏览我的回答吗,期待您的反馈????
-
@Bhavya 是的,谢谢您的宝贵时间。目前我正试图弄清楚我将如何做到这一点。您提供的解决方案看起来很昂贵,所以我不确定我是否可以使用它,因为它必须很快。我会再等一会儿,如果没有其他解决方案,我会接受你的回答。
-
感谢您的回复????是的,你是对的,它非常昂贵,但如果你愿意,我也可以提供使用 n-gram 的解决方案????
-
@Bhavya 哦,这会很有帮助,因为这可能是我唯一的选择,所以请接受!
标签: elasticsearch elasticsearch-query