2013-05-29 5 views
0

다음과 같은 쿼리가 있습니다.탄성 검색 검색 쿼리는 정확한 일치만을 반환합니다.

검색 할 때 정확한 일치 결과 만 얻는 이유는 무엇입니까? 예를 들면;

나는 "애그리"나는 결과를 얻을 수 있지만, 나는 "Aegl"를 검색하면 결과가 내가 실제 쿼리를 볼 수 없습니다하지만 당신은 검색의 말에 *를 누락 될 수 있습니다

query = { 
    "query": { 
    "query_string": { 
     "query": "%s"%q 
    } 
    }, 
    "filter": { 
    "term": { 
     "has_product": 1 
    } 
    }, 
    "facets": { 
    "destination": { 
     "terms": { 
     "field": "destination.en" 
     }, 
     "facet_filter": { 
     "term": { 
      "has_product": 1 
     } 
     } 
    }, 
    "hotel_class": { 
     "terms": { 
     "field": "hotel_class" 
     }, 
     "facet_filter": { 
     "term": { 
      "has_product": 1 
     } 
     } 
    }, 
    "hotel_type": { 
     "terms": { 
     "field": "hotel_type" 
     }, 
     "facet_filter": { 
     "term": { 
      "has_product": 1 
     } 
     } 
    } 
    } 
} 
+0

를 해결 가졌어요. ngram을 색인화하기로 결정할 수도 있지만 (색인은 정말 빠르게 증가 할 것입니다) 또는 와일드 카드 조회를 사용합니다 (느리게). – javanna

답변

0

을 반환 검색 단어와 쿼리 문자열은 같아야합니다.

{"query_string": {"query": "%s*"} 

예 :

{"query_string": {"query": "Aegl*"} 
+0

NGRAM 토큰 화자로 해결해야하는이게 뭔가라고 생각합니다. 이 방법은 스케일링에 좋지 않을 수 있습니다. – tunaktunak

+1

토큰 화기에 대한 설명은 여기를 참조하십시오 http://stackoverflow.com/questions/16816628/fetch-all-documents-if-source-contains-the-given-search-text-in-elastic-search- 에스 – jackdbernier

0

아래
{ 
    "mappings": { 
     "hotel": { 
      'properties': {"name": { 
       "type": "string", 
       "search_analyzer": "str_search_analyzer", 
       "index_analyzer": "str_index_analyzer" 
      } 
      }}, 

    }, 

    "settings": { 
     "analysis": { 
      "analyzer": { 
       "str_search_analyzer": { 
        "tokenizer": "keyword", 
        "filter": ["lowercase"] 
       }, 

       "str_index_analyzer": { 
        "tokenizer": "keyword", 
        "filter": ["lowercase", "substring"] 
       } 
      }, 

      "filter": { 
       "substring": { 
        "type": "nGram", 
        "min_gram": 1, 
        "max_gram": 20 
       } 
      } 
     } 
    } 
} 

같은 매핑 내 문제 루씬 같은 역 색인이 일을 가정되는 방법