2013-07-25 3 views
0

Я хотел бы искать условия (GoogleEarth или googleearch) с помощью функции elasticSearch.
Теперь, если я попытался выполнить поиск по запросу «Google», я не могу получить никаких результатов без NGram или EdgeNGram.
Я не хочу использовать nGram, потому что они получают много результатов. Итак, теперь я просто использую Bool Query + multimatchquery. В этом случае я не могу получить результаты с помощью частичных слов. Надеюсь, я смогу найти «Google Earth» или «Google» или «Землю», чтобы получить GoogleEarth. Как я могу это получить?
Выбор поискового запроса Elasticsearch

Теперь я просто использую запрос «GoogleEarth», чтобы получить правильный результат. Я хочу искать условия, если они включены.

.setQuery(QueryBuilders.boolQuery().should(QueryBuilders.multiMatchQuery(query, 
           'title','name','tag'))) 

обновление

Я пытался искать условия на основе точного соответствия. Если я ищу «google», я хочу получить «google ***» «googleearth» и так далее. Я знаю, если я использую edgeNGram или nGram, я могу получить меньше связанных результатов. Поэтому, если это возможно, я не хочу использовать nGram или edgeNGram. У вас есть идеи?

ответ

1

Я думаю, вам нужно определить пользовательский анализатор для токенизации слов на основе верблюжьего случая - т. Е. «GoogleEarth» нужно обозначить в частях «Google» и «Земля».

См camelcase tokenizer раздел http://www.elasticsearch.org/guide/reference/index-modules/analysis/pattern-analyzer/

+0

Спасибо за ваш ответ. Я попытался найти условия, основанные на точном совпадении. Если я ищу «google», я могу получить «google ***» «googleearth» и так далее. Я знаю, если я использую edgeNGram, я могу это сделать. Но я также должен получить меньше связанных терминов. Есть ли у вас какие-либо идеи? – Soo

+0

Я не понимаю ваш вопрос. Я предлагаю вам обновить свой вопрос и предоставить множество точных примеров запросов и исходного текста, который вы ожидаете сопоставить. Также расширьте то, что вы подразумеваете под «менее связанными терминами». – nickdos

+0

Я просто имею в виду, что я могу получить намного меньше связанных результатов nGram. Если я запрошу «google», у меня может быть «googa», «goooo». – Soo

Смежные вопросы