Autocompleter


(Valdas) #1

hello,
it's possible to create autocompleter. In solr is very easy to create
them. But in ES is not simple. We trying it write with regexp. But
it's not fast. Best way to create autocompleter is? We trying to make
ex.how google. then user typing word example g (must show google,
gmail and etc), if add go (it's showing google)

Thanks for help.


(Karussell) #2

But in ES is not simple

probably less documentation exists, but calling something not simple
depends on a lot stuff :wink:

Using the (edge) n gram token filter should give you the direction to
one possible solution.

Regards,
Peter.

On 2 Dez., 18:54, Valdas valdas.jancaus...@gmail.com wrote:

hello,
it's possible to create autocompleter. In solr is very easy to create
them. But in ES is not simple. We trying it write with regexp. But
it's not fast. Best way to create autocompleter is? We trying to make
ex.how google. then user typing word example g (must show google,
gmail and etc), if add go (it's showing google)

Thanks for help.


(Shay Banon) #3

Are you referring to the "suggester" functionality in Lucene? If so, I am
not a big fan of it, because it is not "realtime" and requires rebuilding
it periodically (which can get really expensive), so, at least now, its not
implemented in elasticsearch.

Obviously, many people have implemented auto suggest by simply doing
"search", using things like ngrams.

On Fri, Dec 2, 2011 at 7:54 PM, Valdas valdas.jancauskas@gmail.com wrote:

hello,
it's possible to create autocompleter. In solr is very easy to create
them. But in ES is not simple. We trying it write with regexp. But
it's not fast. Best way to create autocompleter is? We trying to make
ex.how google. then user typing word example g (must show google,
gmail and etc), if add go (it's showing google)

Thanks for help.


(Valdas) #4

Our autocompleter structure:
ID, 'categories', 'keywordsAnalyze', 'keywordsNoAnalyze';

ex. if user typing one word (ex.w "demon"), it using regexp:
{"query":{"match_all":{}},"from":0,"size":10,"facets":
{"group_by_terms":{"terms":{"field":"keywordsNoAnalyze","size":
10,"regex":"demon.","regex_flags":"DOTALL"}}}}
if user typing word with to words (it using regexp and query):
{"query":{"query_string":{"query":"keywordsAnalyze: (+demon)"}},"from":
0,"size":5,"facets":{"group_by_terms":{"terms":
{"field":"keywordsNoAnalyze","size":
10,"regex":"ga.
","regex_flags":"DOTALL"}}}}.

Now i will try it with ngrams. :wink:


(system) #5