2016-02-23 3 views
2

Я новичок в ElasticSearch, и я очень доволен скоростью на данный момент. У меня все еще есть одно требование, которого я не смог достичь.Как искать слова, разделенные _ и. в ElasticSearch?

ElasticSearch кажется расколоть следующий текст при выполнении индексирования:

"bmw.co.uk" 
"apple_macbook_pro" 

Я ищу в Ruby, как это с помощью ElasticSearch перл:

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 для соответствия.

Как я могу достичь этого?

Addtional информация

Я смотрел на этот сайт, который находится вдоль линий, что я ищу, чтобы сделать, но не совсем:

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

Если у меня есть URL-адрес:

uk-on-sale.com 

Я хочу, чтобы это было лексемы как:

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

ответ

-1

Вы пробовали "match_phrase" запрос?

+0

Да, это не дает желаемого результата – Steve