Nice. Thanks.
On Tue, Apr 29, 2014 at 2:03 AM, Dan Tuffery <[email protected]> wrote: > You could use a function score query and use the field length as the score: > > { > "from": "0", > "size": "20", > "explain": true, > "query": { > "function_score": { > "query": { > "multi_match": { > "query": "happy", > "fields": [ > "DISPLAY_NAME.name" > ] > } > }, > "script_score": { > "script": "_score = > pow(doc['DISPLAY_NAME.untouched'].value.length(), -1)" > } > } > } > } > > Dan > > On Monday, April 28, 2014 3:08:24 PM UTC+1, cyrilforce wrote: > >> Hi Dan, >> >> It worked ! Btw one more questions. Now the result returned me the same >> scores for all : >> >> 1)"_score": 1.6931472, >> "_source": { >> "DISPLAY_NAME": "Happy Tears", >> >> 2) "_score": 1.6931472, >> "_source": { >> "DISPLAY_NAME": "Happy Happy Sangeethalu", >> >> 3)"_score": 1.6931472, >> "_source": { >> "DISPLAY_NAME": "Happy", >> >> Anyway to manipulate the 3) to appear first ? >> >> >> >> *The query : * >> >> { >> "explain" : true, >> "query" : { >> "multi_match": { >> "query": "happy", >> "fields": [ "DISPLAY_NAME.AUTOCOMPLETE" ] >> } >> }, >> "sort" : [{ >> "_score" : { "order" : "desc"}, >> "DISPLAY_NAME.NAME" : { "order" : "asc" }}] >> } >> >> >> >> Thanks. >> >> >> On Mon, Apr 28, 2014 at 9:43 PM, Dan Tuffery <[email protected]> wrote: >> >>> Change your mapping to: >>> >>> DISPLAY_NAME": { >>> "type": "multi_field", >>> "fields": { >>> "AUTOCOMPLETE": { >>> "type": "string", >>> "index_analyzer": "edge_ngram_keyword_lowercase_ >>> analyzer", >>> "include_in_all": false >>> }, >>> "NAME": { >>> "type": "string", >>> "analyzer": "standard", >>> "include_in_all": false >>> } >>> } >>> } >>> >>> the DISPLAY_NAME term will be indexed using >>> 'edge_ngram_keyword_lowercase_analyzer'. When you search on DISPLAY_NAME >>> >>> On Monday, April 28, 2014 2:31:24 PM UTC+1, cyrilforce wrote: >>> >>>> Hi Dan, >>>> >>>> Not sure whether i have same understanding "*edge n-gram filter at >>>> search time*" refer to apply edge n-gram filter in the query ? If this >>>> is the case i think i didn't apply any analyzer in the query : >>>> >>>> *Here my query : * >>>> >>>> { >>>> "query" : { >>>> "multi_match": { >>>> "query": "happy", >>>> "fields": [ "DISPLAY_NAME.AUTOCOMPLETE" ] >>>> } >>>> }, >>>> "sort" : [{ >>>> "_score" : { "order" : "desc"}, >>>> "DISPLAY_NAME.NAME" : { "order" : "asc" }}] >>>> } >>>> >>>> >>>> >>>> *The result : * >>>> https://gist.github.com/cheehoo/11371837 >>>> >>>> As you notice in the result it returned : >>>> >>>> Happenings >>>> Happier? >>>> >>>> which aren't part of what i searched for. >>>> >>>> >>>> *The mapping : * >>>> https://gist.github.com/cheehoo/11371897 >>>> >>>> >>>> *The index : * >>>> { >>>> "jdbc_dev": { >>>> "settings": { >>>> "index.number_of_shards": "5", >>>> "index.number_of_replicas": "1", >>>> "index.version.created": "900299", >>>> "index.analysis.filter.my_edge_ngram_filter.type": >>>> "edgeNGram", >>>> "index.analysis.analyzer.edge_ngram_keyword_lowercase_ >>>> analyzer.filter.1": "lowercase", >>>> "index.analysis.analyzer.edge_ngram_keyword_lowercase_ >>>> analyzer.filter.0": "my_edge_ngram_filter", >>>> "index.analysis.analyzer.edge_ngram_keyword_lowercase_ >>>> analyzer.tokenizer": "keyword", >>>> "index.analysis.filter.my_edge_ngram_filter.min_gram": "2", >>>> "index.analysis.filter.my_edge_ngram_filter.max_gram": "30" >>>> } >>>> } >>>> } >>>> >>>> >>>> >>>> >>>> After that with Adrien suggestion i tried create the analyzer >>>> >>>> "analysis" : { >>>> "analyzer" : { >>>> "keyword_lowercase_analyzer" : { >>>> "tokenizer" : "keyword", >>>> "filter" : ["lowercase"] >>>> } >>>> } >>>> } >>>> >>>> and recreate the mapping with : >>>> >>>> "DISPLAY_NAME": { >>>> >>>> "type": "string", >>>> "search_analyzer" : "keyword_lowercase_analyzer" >>>> >>>> } >>>> >>>> >>>> however with this configuration it wasn't able to search via "hap" to >>>> return the following result : >>>> >>>> >>>> *1)Happy* >>>> *2)Happy birthday* >>>> *3)Happy valentine* >>>> >>>> >>>> Thanks >>>> >>>> >>>> >>>> >>>> >>>> On Mon, Apr 28, 2014 at 8:17 PM, Dan Tuffery <[email protected]>wrote: >>>> >>>>> As Adrien said don't apply the edge n-gram filter at search time. When >>>>> you tried it what does you mapping look like, because "hap" should return >>>>> a >>>>> result. >>>>> >>>>> Dan >>>>> >>>>> >>>>> On Monday, April 28, 2014 12:41:38 PM UTC+1, cyrilforce wrote: >>>>> >>>>>> Hi dan >>>>>> >>>>>> I tried this before however it returns me some irrelevant result as >>>>>> well : >>>>>> https://gist.github.com/cheehoo/11365794 >>>>>> >>>>>> How I could get only the relevant result with the sorting via edge >>>>>> ngram ? Thanks >>>>>> On Apr 28, 2014 7:36 PM, "Dan Tuffery" <[email protected]> wrote: >>>>>> >>>>>>> To return the query results in the order you want, execute the >>>>>>> sort on a not_analyzed version of the term, i.e >>>>>>> >>>>>>> "DISPLAY_NAME": { >>>>>>> "type": "string", >>>>>>> "fields": { >>>>>>> "NAME": { >>>>>>> "type": "string", >>>>>>> "analyzer": "edge_ngram_keyword_lowercase_analyzer" >>>>>>> }, >>>>>>> "untouched":{ >>>>>>> "type": "string", >>>>>>> "analyzer":"not_analyzed" >>>>>>> } >>>>>>> } >>>>>>> } >>>>>>> >>>>>>> Reindex the data. Now in your query you can sort on the 'untouched' >>>>>>> field: >>>>>>> >>>>>>> { >>>>>>> "from" : "0", >>>>>>> "size" : "20", >>>>>>> "explain" : true, >>>>>>> >>>>>>> "query" : { >>>>>>> "multi_match": { >>>>>>> "query": "happy", >>>>>>> "fields": [ "DISPLAY_NAME.name"] >>>>>>> } >>>>>>> }, >>>>>>> "sort" : [{ >>>>>>> "DISPLAY_NAME.untouched" : { "order" : "desc"}}] >>>>>>> } >>>>>>> >>>>>>> which will return >>>>>>> >>>>>>> *1)Happy* >>>>>>> *2)Happy birthday* >>>>>>> *3)Happy valentine* >>>>>>> >>>>>>> Dan >>>>>>> >>>>>>> >>>>>>> On Monday, April 28, 2014 9:50:44 AM UTC+1, cyrilforce wrote: >>>>>>>> >>>>>>>> Hi All, >>>>>>>> >>>>>>>> I am trying to use *edge-ngram filter *to achieve auto-completion >>>>>>>> behaviour. However when i run the following query : >>>>>>>> >>>>>>>> { >>>>>>>> "from" : "0", >>>>>>>> "size" : "20", >>>>>>>> "explain" : true, >>>>>>>> >>>>>>>> "query" : { >>>>>>>> *"multi_match": {* >>>>>>>> * "query": "happy",* >>>>>>>> * "fields": [ "DISPLAY_NAME.NAME <http://DISPLAY_NAME.NAME>"]* >>>>>>>> * }* >>>>>>>> }, >>>>>>>> "sort" : [{ >>>>>>>> "_score" : { "order" : "desc"}}] >>>>>>>> } >>>>>>>> >>>>>>>> It returns me documents : >>>>>>>> >>>>>>>> https://gist.github.com/cheehoo/11365794 >>>>>>>> >>>>>>>> >>>>>>>> May i know how can i achieve the behaviour when i search "*happy*" >>>>>>>> then is should return me following result instead : >>>>>>>> >>>>>>>> *1)Happy* >>>>>>>> *2)Happy birthday* >>>>>>>> *3)Happy valentine* >>>>>>>> >>>>>>>> >>>>>>>> The analzyer configure : >>>>>>>> >>>>>>>> "analysis" : { >>>>>>>> "analyzer" : { >>>>>>>> "edge_ngram_keyword_lowercase_analyzer" : { >>>>>>>> "tokenizer" : "keyword", >>>>>>>> "filter" : ["my_edge_ngram_filter","lowercase"] >>>>>>>> } >>>>>>>> }, >>>>>>>> "filter" : { >>>>>>>> "my_edge_ngram_filter" : { >>>>>>>> "type" : "edgeNGram", >>>>>>>> "min_gram" : "2", >>>>>>>> "max_gram" : "30" >>>>>>>> >>>>>>>> } >>>>>>>> } >>>>>>>> } >>>>>>>> >>>>>>>> >>>>>>>> The mapping : >>>>>>>> https://gist.github.com/cheehoo/11365917 >>>>>>>> >>>>>>>> Thanks. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>> You received this message because you are subscribed to a topic in >>>>>>> the Google Groups "elasticsearch" group. >>>>>>> To unsubscribe from this topic, visit https://groups.google.com/d/to >>>>>>> pic/elasticsearch/fhsCgFBF76E/unsubscribe. >>>>>>> To unsubscribe from this group and all its topics, send an email to >>>>>>> [email protected]. >>>>>>> >>>>>>> To view this discussion on the web visit >>>>>>> https://groups.google.com/d/msgid/elasticsearch/7ad16d4e-aed >>>>>>> 3-474e-893d-92cc788003b0%40googlegroups.com<https://groups.google.com/d/msgid/elasticsearch/7ad16d4e-aed3-474e-893d-92cc788003b0%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>> . >>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>> >>>>>> -- >>>>> You received this message because you are subscribed to a topic in the >>>>> Google Groups "elasticsearch" group. >>>>> To unsubscribe from this topic, visit https://groups.google.com/d/to >>>>> pic/elasticsearch/fhsCgFBF76E/unsubscribe. >>>>> To unsubscribe from this group and all its topics, send an email to >>>>> [email protected]. >>>>> To view this discussion on the web visit https://groups.google.com/d/ >>>>> msgid/elasticsearch/f7b7df20-4136-4cb6-9dcc-318502ac05f9%40goo >>>>> glegroups.com<https://groups.google.com/d/msgid/elasticsearch/f7b7df20-4136-4cb6-9dcc-318502ac05f9%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> >>>> >>>> -- >>>> Regards, >>>> >>>> Chee Hoo >>>> >>> -- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "elasticsearch" group. >>> To unsubscribe from this topic, visit https://groups.google.com/d/ >>> topic/elasticsearch/fhsCgFBF76E/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> [email protected]. >>> To view this discussion on the web visit https://groups.google.com/d/ >>> msgid/elasticsearch/f296c0d1-0248-4d62-aba4-057373596343% >>> 40googlegroups.com<https://groups.google.com/d/msgid/elasticsearch/f296c0d1-0248-4d62-aba4-057373596343%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >> -- >> Regards, >> >> Chee Hoo >> > -- > You received this message because you are subscribed to a topic in the > Google Groups "elasticsearch" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/elasticsearch/fhsCgFBF76E/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elasticsearch/a49fed20-b734-42ac-ad51-ee9947ebe909%40googlegroups.com<https://groups.google.com/d/msgid/elasticsearch/a49fed20-b734-42ac-ad51-ee9947ebe909%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- Regards, Chee Hoo -- You received this message because you are subscribed to the Google Groups "elasticsearch" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/CAGS0%2Bg-7j%3Dwbw9kx6iVMuQfXoJt5k1JU3M%3Dk77B-rwb0-1RkKQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
