我如何搜索由_和。分隔的单词。在ElasticSearch?

时间:2016-02-23 08:05:42

标签: ruby elasticsearch

我是ElasticSearch的新手,我对目前的速度感到非常满意。 我仍然有一个我无法实现的要求。

ElasticSearch似乎在进行索引时拆分了以下文本:

"bmw.co.uk"
"apple_macbook_pro"

我使用ElasticSearch gem在这样的Ruby中搜索:

result = client.search index: 'elasticsearch_dev',
                  body: {
                      query: {
                          "bool" => {
                            "must" => {"match" => {"search_text" => {"query" => "bmw", "operator" => "and"}}},
                            "must_not" => {"match" => {"search_text" => {"query" => "", "operator" => "or"}}}
                          }
                      },
                  }

我想要实现的目标:

当我搜索“bmw”或“bmw.co”时,我希望bmw.co.uk的记录匹配。

当我搜索“acboo”或“apple”时,我希望apple_macbook_pro的记录匹配。

我如何实现这一目标?

添加信息

我看过这个网站,这是我想要做的,但并不完全:

http://www.fullscale.co/blog/2013/03/04/preserving_specific_characters_during_tokenizing_in_elasticsearch.html

如果我有网址:

uk-on-sale.com

我希望将其标记为:

[uk, on, sale, com, uk-on, on-sale, uk-on-sale.com, on-sale.com, sale.com, .com]

1 个答案:

答案 0 :(得分:-1)

您是否尝试过"match_phrase"查询?