'rewrite'에 해당되는 글 1건

  1. 2017.12.20 [Elasticsearch] simple query 내 synonym graph 사용

[Elasticsearch] simple query 내 synonym graph 사용

Elastic/Elasticsearch 2017. 12. 20. 10:11

일단 나중에 잊을 수도 있어서 keep 합니다.


Ref.

https://www.elastic.co/guide/en/elasticsearch/reference/6.1/query-dsl-simple-query-string-query.html#_synonyms_2


Simple Query 사용 시 추가 되는 parameter 인데, 이 기능을 잘 활용하면  query expansion (query rewrite) 기능을 대체 할 수도 있겠다는 생각이 듭니다.

그래서 일단 기록!

Synonyms

The simple_query_string query supports multi-terms synonym expansion with the synonym_graph token filter. When this filter is used, the parser creates a phrase query for each multi-terms synonyms. For example, the following synonym: "ny, new york" would produce:


(ny OR ("new york"))


It is also possible to match multi terms synonyms with conjunctions instead:

GET /_search

{

   "query": {

       "simple_query_string" : {

           "query" : "ny city",

           "auto_generate_synonyms_phrase_query" : false

       }

   }

}

약간의 부연 설명을 하자면, 보통 사용자가 입력한 검색어만 가지고 검색을 하는 경우는 이커머스에서는 거의 없습니다.

대부분 사용자가 입력한 검색어 + 확장검색어 형태로 질의를 하게 되는데요.

일반적으로 가장 많이 사용하는 방식이 색인 시점에 동의어를 통한 검색어 확장입니다.

이건 색인 시점이고 위 기능을 잘 활용하게 되면 질의 시점에 검색어 확장을 통한 상품 매칭을 할 수 있습니다.

저는 보통 Query Expansion 기능이라고 부르는데요. 이 작업은 Query Rewriter 라고 불리는 영역에서도 수행이 되기도 합니다.


간단한 예를 들자면)

"나이키" 라는 검색어가 들어 왔을 때 이를 개인화 query expansion 기능을 적용 한다면 저 키워드를 입력한 사용자가 선호 하는게 "운동화" 였다면, 실제 검색 매칭에 사용되는 검색어는 "나이키" + "운동화" 가 되는 것입니다.

이건 단순 예시 입니다.

: