

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Neptune 전체 텍스트 검색 파라미터
<a name="full-text-search-parameters"></a>

Amazon Neptune은 Gremlin과 SPARQL 모두에서 전체 텍스트 OpenSearch 쿼리를 지정하기 위해 다음 파라미터를 사용합니다.
+ **`queryType`**   –   (*필수*) OpenSearch 쿼리 유형입니다. (쿼리 유형 목록은 [OpenSearch 설명서](https://www.elastic.co/guide/en/elasticsearch/reference/current/full-text-queries.html)를 참조하세요.) Neptune에서는 다음 OpenSearch 쿼리 유형을 지원합니다.
  + [simple\$1query\$1string](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html)   –   제한적이지만, 내결함성 Lucene 구문을 사용하는 파서를 통해 제공된 쿼리 문자열을 기준으로 문서를 반환합니다. 이것이 기본 쿼리 유형입니다.

    이 쿼리는 특수 연산자를 기준으로 간단한 구문을 사용하여 제공된 쿼리 문자열을 구문 분석하고 단어로 분할합니다. 그런 다음 쿼리는 일치하는 문서를 반환하기 전에 각 단어를 개별적으로 분석합니다.

    구문이 `query_string` 쿼리보다 제한적이지만 `simple_query_string` 쿼리는 잘못된 구문에 대한 오류를 반환하지 않습니다. 대신에 쿼리 문자열의 잘못된 부분을 무시합니다.
  + [match](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html)   –   `match` 쿼리는 퍼지 일치 옵션을 포함하여 전체 텍스트 검색을 수행하기 위한 표준 쿼리입니다.
  + [prefix](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html)   –   제공된 필드에서 특정 접두사가 포함된 문서를 반환합니다.
  + [fuzzy](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html)   –   Levenshtein 편집 거리로 측정한 검색 단어와 유사한 단어가 포함된 문서를 반환합니다.

    편집 거리는 한 단어를 다른 단어로 바꾸는 데 필요한 한 문자의 변경 횟수입니다. 이러한 변경에는 다음 사항이 포함될 수 있습니다.
    + 문자 변경(예: box를 fox로 수정)
    + 문자 제거(예: black을 lack으로 수정)
    + 문자 삽입(예: sic을 sick으로 수정)
    + 인접한 두 문자 전치(예: act를 cat으로 수정)

    유사한 단어를 찾기 위해 fuzzy 쿼리는 지정된 편집 거리 내에서 검색 단어의 가능한 모든 변형 및 확장 집합을 만든 다음 각 변형에 대해 정확히 일치하는 항목을 반환합니다.
  + [term](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html)   –   지정된 필드 중 하나에서 지정된 단어와 정확히 일치하는 항목이 포함된 문서를 반환합니다.

    `term` 쿼리를 사용하여 가격, 제품 ID 또는 사용자 이름과 같은 정확한 값을 기준으로 문서를 찾을 수 있습니다.
**주의**  
텍스트 필드에서는 term 쿼리를 사용하지 마십시오. 기본적으로 OpenSearch는 분석의 일부로 텍스트 필드의 값을 변경하므로, 텍스트 필드 값과 정확히 일치하는 항목을 찾기가 어려울 수 있습니다.  
텍스트 필드 값을 검색하려면 match 쿼리를 대신 사용합니다.
  + [query\$1string](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html)   –   엄격한 구문(Lucene 구문)을 사용하는 파서를 통해 제공된 쿼리 문자열을 기준으로 문서를 반환합니다.

    이 쿼리는 AND 또는 NOT과 같은 연산자를 기준으로 구문을 사용하여 제공된 쿼리 문자열을 구문 분석하고 분할합니다. 그런 다음 쿼리는 일치하는 문서를 반환하기 전에 각 분할된 텍스트를 개별적으로 분석합니다.

    `query_string` 쿼리를 사용하여 와일드카드 문자, 여러 필드에서 검색 등을 포함하는 복잡한 검색을 만들 수 있습니다. 다목적 쿼리이지만 엄격하며 쿼리 문자열에 잘못된 구문이 포함되어 있으면 오류를 반환합니다.
**주의**  
잘못된 구문에 대해 오류를 반환하므로 검색 상자에서 `query_string` 쿼리를 사용하지 않는 것이 좋습니다.  
쿼리 구문을 지원할 필요가 없는 경우 `match` 쿼리 사용을 고려합니다. 쿼리 구문의 기능이 필요한 경우 덜 엄격한 `simple_query_string` 쿼리를 사용합니다.
+ **`field`**   –   검색을 실행할 OpenSearch의 필드입니다. 이는 `queryType` 및 `simple_query_string`과 마찬가지로 `query_string`이 허용하는 경우에만 생략할 할 수 있으며, 이 경우 검색은 모든 필드에 대해 이루어집니다. Gremlin에서는 암시적입니다.

  `simple_query_string` 및 `query_string`과 마찬가지로 쿼리가 허용하는 경우 여러 필드를 지정할 수 있습니다.
+ **`query`**   –   (*필수*) OpenSearch에 대해 실행할 쿼리입니다. 이 필드의 내용은 queryType에 따라 달라질 수 있습니다. queryTypes마다 다른 구문을 사용합니다(예: `Regexp`). Gremlin에서 `query`는 암시적입니다.
+ **`maxResults`**   –   반환할 최대 결과 수입니다. 기본값은 `index.max_result_window` OpenSearch 설정(기본값: 10,000)입니다. `maxResults` 파라미터는 이보다 작은 수를 지정할 수 있습니다.
**중요**  
`maxResults`를 OpenSearch `index.max_result_window` 값보다 높은 값으로 설정하고 `index.max_result_window` 결과보다 더 많이 검색하려고 시도하면 `Result window is too large` 오류가 발생하여 OpenSearch가 실패합니다. 하지만 Neptune에서는 이러한 경우 오류를 전파하지 않고 정상적으로 처리합니다. `index.max_result_window` 결과보다 더 많이 가져오려고 시도하는 경우 이 점에 유의하십시오.
+ **`minScore`**   –   검색 결과를 반환해야 하는 최소 점수입니다. 결과 점수에 대한 설명은 [OpenSearch 관련성 설명서](https://www.elastic.co/guide/en/elasticsearch/guide/current/scoring-theory.html)를 참조하세요.
+ **`batchSize`**   –   Neptune은 데이터를 항상 배치(batch)로 가져옵니다(기본 배치 크기: 100). 이 파라미터를 사용하여 성능을 조정할 수 있습니다. 배치 크기는 `index.max_result_window` OpenSearch 설정(기본값: 10,000)을 초과할 수 없습니다.
+ **`sortBy`**   –   OpenSearch에서 반환된 결과를 다음 중 하나로 정렬할 수 있는 선택적 파라미터입니다.
  + *문서의 특정 문자열 필드*   –  

    예를 들어 SPARQL 쿼리에서 다음을 지정할 수 있습니다.

    ```
        neptune-fts:config neptune-fts:sortBy foaf:name .
    ```

    유사한 Gremlin 쿼리에서 다음을 지정할 수 있습니다.

    ```
        .withSideEffect('Neptune#fts.sortBy', 'name')
    ```
  + *문서의 특정 비문자열 필드(`long`, `double` 등)*   –  

    비문자열 필드를 정렬할 때는 필드 이름에 `.value`를 추가하여 문자열 필드와 구분해야 합니다.

    예를 들어 SPARQL 쿼리에서 다음을 지정할 수 있습니다.

    ```
        neptune-fts:config neptune-fts:sortBy foaf:name.value .
    ```

    유사한 Gremlin 쿼리에서 다음을 지정할 수 있습니다.

    ```
        .withSideEffect('Neptune#fts.sortBy', 'name.value')
    ```
  + `score`   –   일치 점수를 기준으로 정렬합니다(기본값).

    `sortOrder` 파라미터가 있지만 `sortBy`는 없는 경우 결과는 `score`에 지정된 순서대로 `sortOrder`에 의해 정렬됩니다.
  + `id`   –   SPARQL 주체 URI나 Gremlin 버텍스 또는 엣지 ID를 의미하는 ID를 기준으로 정렬합니다.

    예를 들어 SPARQL 쿼리에서 다음을 지정할 수 있습니다.

    ```
        neptune-fts:config neptune-fts:sortBy 'Neptune#fts.entity_id' .
    ```

    유사한 Gremlin 쿼리에서 다음을 지정할 수 있습니다.

    ```
        .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.entity_id')
    ```
  + `label`   –   레이블을 기준으로 정렬합니다.

    예를 들어 SPARQL 쿼리에서 다음을 지정할 수 있습니다.

    ```
        neptune-fts:config neptune-fts:sortBy 'Neptune#fts.entity_type' .
    ```

    유사한 Gremlin 쿼리에서 다음을 지정할 수 있습니다.

    ```
        .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.entity_type')
    ```
  + `doc_type`   –   문서 유형(즉 SPARQL 또는 Gremlin)을 기준으로 정렬합니다.

    예를 들어 SPARQL 쿼리에서 다음을 지정할 수 있습니다.

    ```
        neptune-fts:config neptune-fts:sortBy 'Neptune#fts.document_type' .
    ```

    유사한 Gremlin 쿼리에서 다음을 지정할 수 있습니다.

    ```
        .withSideEffect('Neptune#fts.sortBy', 'Neptune#fts.document_type')
    ```

  기본적으로 OpenSearch 결과는 정렬되지 않으며 순서는 비결정적입니다. 즉 동일한 쿼리는 실행될 때마다 다른 순서로 항목을 반환할 수 있습니다. 이러한 이유로 결과 집합이 `max_result_window`보다 크면 쿼리가 실행될 때마다 상당히 다른 전체 결과 하위 집합이 반환될 수 있습니다. 그러나 정렬하면 다양한 실행의 결과를 더 직접적으로 비교할 수 있습니다.

  `sortOrder` 파라미터가 `sortBy`를 수반하지 않으면 최대값에서 최소값 순으로 정렬하는 내림차순(`DESC`)이 사용됩니다.
+ **`sortOrder`**   –   OpenSearch 결과를 최소값에서 최대값 순으로 또는 최대값에서 최소값 순(기본값)으로 정렬할지 지정할 수 있는 선택적 파라미터입니다.

****
  + `ASC`   –   오름차순(최소값에서 최대값 순으로 정렬).
  + `DESC`   –   내림차순(최대값에서 최소값 순으로 정렬).

    이것은 `sortBy` 파라미터가 없지만 `sortOrder`가 지정되지 않은 경우 사용되는 기본값입니다.

  `sortBy`와 `sortOrder` 둘 다 없는 경우 OpenSearch 결과는 정렬되지 않도록 기본 설정됩니다.