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]<javascript:>
> > 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/
>>>> 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/7ad16d4e-aed3-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/topic/elasticsearch/fhsCgFBF76E/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/elasticsearch/f7b7df20-4136-4cb6-9dcc-318502ac05f9%40googlegroups.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 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/f296c0d1-0248-4d62-aba4-057373596343%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to