2.X/2. Search in Depth

2-3-02. Single Query String

drscg 2017. 9. 30. 00:55

The bool query is the mainstay of multiclause queries. It works well for many cases, especially when you are able to map different query strings to individual fields.

bool query는 다중 절(multi-clause) query의 핵심이다. 그것은 대부분의 경우 잘 동작한다. 특히 개별 field에 다른 query string을 mapping한 경우에 잘 동작한다.

The problem is that, these days, users expect to be able to type all of their search terms into a single field, and expect that the application will figure out how to give them the right results. It is ironic that the multifield search form is known as Advanced Search—it may appear advanced to the user, but it is much simpler to implement.

문제는, 요즘 사용자들이 검색하려는 단어 모두를 하나의 field에 입력하려 하고, 응용프로그램이 그들에게 올바른 결과를 제공하는 방법을 계산해 내려 한다는 점이다. 다중 field 검색 형식이 고급 검색(Advanced Search) 으로 알려져 있는 것은 아이로니컬하다. 사용자들에게는 고급스러워 보일지 몰라도 구현하기는 매우 간단하다.

There is no simple one-size-fits-all approach to multiword, multifield queries. To get the best results, you have to know your data and know how to use the appropriate tools.

다중 단어, 다중 field query는 간단한, 널리 적용되도록 만들어진(one-size-fits-all) 접근 방식이 아니다. 최선의 결과를 얻기 위해, 데이터를 알아야 하고, 적절한 방식을 사용하는 방법을 알아야 한다.

Know Your Dataedit

When your only user input is a single query string, you will encounter three scenarios frequently:

사용자 입력만이 하나의 query string일 경우, 자주 접하게 될 세가지 시나리오가 있다.

Best fields

When searching for words that represent a concept, such as "brown fox", the words mean more together than they do individually. Fields like the title and body, while related, can be considered to be in competition with each other. Documents should have as many words as possible in the same field, and the score should come from the best-matching field.

"brown fox" 처럼, 개념을 나타내는 단어를 검색할 경우, 그 단어들은 따로 있는 것 보다는 같이 있어야 의미가 있다. titlebody 같은 field는, 연관되어 있지만, 서로 경쟁하고 있는 것으로 간주될 수 있다. document는 동일한 field 에 가능한 한 많은 단어를 가지고 있어야 하고, score는 가장 일치하는(best matching) field 에서 계산되어야 한다.

Most fields

A common technique for fine-tuning relevance is to index the same data into multiple fields, each with its own analysis chain.

relevance를 미세 조정하는 일반적인 기술은, 동일한 데이터를 여러 field에, 그들 각각의 분석 체인과 함께 색인 하는 것이다.

The main field may contain words in their stemmed form, synonyms, and words stripped of their diacritics, or accents. It is used to match as many documents as possible.

주 field는 형태소(기본형), 동의어 그리고 발음 구별 부호(diacritics) 나 accents를 제외한 단어를 포함하고 있을 것이다. 그것은 가능한 한 많은 document와 일치하는데 사용된다.

The same text could then be indexed in other fields to provide more-precise matching. One field may contain the unstemmed version, another the original word with accents, and a third might use shingles to provide information about word proximity.

동일한 문장(text)은, 보다 정확한 일치를 위하여, 다른 field에 색인될 수 있다. 하나의 field에는 형태소 분석을 하지 않은 원래의 단어를, 다른 field에는 accents를 포함한 원래의 단어를 포함하고, 그리고 또 다른 field에는 단어의 근접성에 대한 정보를 제공하기 위해, 겹치도록 배열하는데(shingles) 사용한다.

These other fields act as signals to increase the relevance score of each matching document. The more fields that match, the better.

이들 다른 field는, 각각의 일치하는 document의 relevance score를 증가시키기 위한, 신호(signal) 로 동작한다. 일치하는 field가 많을수록, 더 좋다.

Cross fields

For some entities, the identifying information is spread across multiple fields, each of which contains just a part of the whole:

대부분의 단체에서는 식별 정보를 여러 field에 걸쳐 저장하고 있다. 그들 각각은 전체 정보의 일부분만을 가지고 있다.

  • Person: first_name and last_name

    사람: 이름

  • Book: titleauthor, and description

    책: 제목저자줄거리

  • Address: streetcitycountry, and postcode

    주소: 우편번호시/도시/군/구번지

In this case, we want to find as many words as possible in any of the listed fields. We need to search across multiple fields as if they were one big field.

이 같은 경우, 나열된 모든(any) field에서 가능한 한 많은 단어를 찾아야 한다. 그 field들이 아주 큰 하나의 field인 것처럼, 여러 field를 검색해야 한다.

All of these are multiword, multifield queries, but each requires a different strategy. We will examine each strategy in turn in the rest of this chapter.

위에서 언급한 모두가 다중 단어, 다중 field query이다. 그러나 각각은 다른 전략을 요구한다. 이 장의 나머지 부분에서, 차례로 각각의 전략을 검토할 것이다.


'2.X > 2. Search in Depth' 카테고리의 다른 글

2-3. Multifield Search  (0) 2017.09.30
2-3-01. Multiple Query Strings  (0) 2017.09.30
2-3-03. Best Fields  (0) 2017.09.30
2-3-04. Tuning Best Fields Queries  (0) 2017.09.30
2-3-05. multi_match Query  (0) 2017.09.30