2013-07-25 4 views
0

Je souhaite rechercher des termes (GoogleEarth ou googleearch) à l'aide de elasticSearch.
Maintenant, si j'ai essayé d'effectuer une recherche dans la requête "Google", je ne peux obtenir aucun résultat sans NGram ou EdgeNGram.
Je ne veux pas utiliser nGram car ils obtiennent beaucoup de résultats. Alors maintenant, je viens d'utiliser Bool Query + multimatchquery. Dans ce cas, je ne peux pas obtenir de résultats par des mots partiels. J'espère pouvoir faire une recherche sur "Google Earth", "Google" ou "Google Earth" pour obtenir Google Earth. Comment puis-je l'obtenir?
Sélection de requête de recherche Elasticsearch

Maintenant, j'utilise la requête 'GoogleEarth' pour obtenir le bon résultat. Je veux rechercher des termes s'ils ont inclus.

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

mise à jour

J'ai essayé des termes de recherche basé sur correspondance exacte. Si je recherche 'google', je veux obtenir 'google ***' 'googleearth' et ainsi de suite. Je sais que si j'utilise edgeNGram ou nGram, je peux obtenir moins de résultats liés. Donc, si possible, je ne veux pas utiliser nGram ou edgeNGram. Avez-vous des idées?

Répondre

1

Je pense que vous devez définir un analyseur personnalisé pour symboliser les mots basés sur le cas de chameau, c'est-à-dire que "GoogleEarth" doit être segmenté en "Google" et "Earth".

Voir la section camelcase tokenizer de http://www.elasticsearch.org/guide/reference/index-modules/analysis/pattern-analyzer/

+0

Merci de votre réponse. J'ai essayé de rechercher des termes en fonction de la correspondance exacte. Si je recherche 'google', je peux obtenir 'google ***' 'googleearth' et ainsi de suite. Je sais si j'utilise edgeNGram, je peux obtenir comme ça. Mais je devrais aussi obtenir moins de termes connexes. Avez-vous une idée? – Soo

+0

Je ne comprends pas votre question. Je vous suggère de mettre à jour votre question et de fournir de nombreux exemples exacts de requêtes et le texte source que vous attendez. Élargissez également ce que vous entendez par «termes moins liés». – nickdos

+0

Je veux juste dire que je peux obtenir beaucoup moins de résultats liés par nGram. Si je demande 'google', je peux avoir 'googa', 'goooo'. – Soo

Questions connexes