Hi All,

I am new to ElasticSearch and currently I am using ElasticSearch to connect 
to MongoDB for indexing and searching. I would like to implement keyword 
auto-complete feature like search engines which provide a list of 
suggestion keyword when user key in partial keywords. I had a document 
which contains many fields and I only want the auto-complete keyword to 
search on 4 fields (title, description, category and sub-category) . Below 
is the index that I am creating:

*curl -XPUT http://localhost:9200/testindex -d '*
*{*
*  "settings": {*
*      "analysis":{*
*          "filter":{*
*              "edge_nGram_filter":{*
*                  "type":"edgeNGram",*
*                  "min_gram": 1,*
*                  "max_gram": 50,*
*                  "token_chars": [*
*                      "letter",*
*                      "digit",*
*                      "punctuation",*
*                      "symbol"*
*                  ]*
*              }*
*          },*
*          "analyzer": {*
*              "edge_nGram_analyzer": {*
*                   "type": "custom",*
*                   "tokenizer": "whitespace",*
*                   "filter": [*
*                       "lowercase",*
*                       "asciifolding",*
*                       "edge_nGram_filter"*
*                   ]*
*              },*
*              "whitespace_analyzer": {*
*                  "type": "custom",*
*                  "tokenizer": "whitespace",*
*                  "filter": [*
*                      "lowercase",*
*                      "asciifolding"*
*                  ]*
*              }*
*         }*
*      }*
*  },*
*  "mappings" : {*
*      "Merchant" : {*
*          "_all": {*
*            "index_analyzer": "edge_nGram_analyzer",*
*            "search_analyzer": "whitespace_analyzer"*
*          },*
*          "properties" : {*
*              "screenNm": {*
*                  "type": "string",*
*                  "index": "no",*
*                  "include_in_all": false*
*              },*
*              "categoryId": {*
*                          "type": "long",  *
*                          "index": "no",*
*                          "include_in_all": false*
*              },*
*              "title": {*
*                  "type": "string",*
*                  "index": "not_analyzed"*
*              },*
*              "desc": {*
*                  "type": "string",*
*                  "index": "not_analyzed"*
*              },*
*             "email": {                  "type": "string",                
  "index": "no",                  "include_in_all": false              },  
            "createdAt": {                  "format": "dateOptionalTime",  
                "type": "date",                  "index": "no",            
      "include_in_all": false              },              
"subCategoryList": {*
*                  "properties" : {*
*                      "subCategoryId": {*
*                          "type": "long",  *
*                          "index": "no",*
*                          "include_in_all": false*
*                      },*
*                      "subCategory": {*
*                          "type": "string",*
*                          "index": "not_analyzed"*
*                      }*
*                  }*
*              },*
*              "category": {*
*                  "type": "string",*
*                  "index": "not_analyzed"*
*              }*
*          }*
*      }*
*   }*
*}'*

Below is my questions and I am hoping some of you could shed me some lights:

1) When I perform match query search on "*_al*l" fields for keyword "*food*" 
(I had set the returned record size to 6), I will get 6 documents which 
match the *food *keyword in either of the fields (title, description, 
category and sub-category). Result example as the following:

     • title=*FoodPandaToyShop*, description=Desc1, category=toy, 
sub-category=kids
     • title=Restaurant B, description=Desc2, category=*foodcategoryA*, 
sub-category=dairy
     • title=Restaurant B, description=Desc3, category= *foodcategoryB*, 
sub-category=dairy
     • title=Restaurant B, description=Desc4, category= *foodcategoryC*, 
sub-category=dairy
     • title=Restaurant B, description=Desc5, category= *foodcategoryD*, 
sub-category=dairy
     
    So the list of string that we want are *FoodPandaToyShop, 
foodcategoryA, foodcategoryB, foodcategoryC, foodcategoryD*. We need to 
find a way to massage the data because we will received document back from 
ElasticSearch instead of text string. Is there a way to get     the text 
instead of the whole document??


2) Can we perform my scenario using completion suggester?? As I need to 
perform search on multiple fields.

3) Is performance a issue if I am using edgeNGram on large documents set?

Appreciate your help. Thanks a lot !!!


Regards,
CYea

-- 
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/3b2bd828-02c4-4899-a615-2a773b6d671a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to