Document 검색
    • PDF

    Document 검색

    • PDF

    Article Summary

    색인별로 생성한 문서에 대해 검색을 수행합니다.
    해당 요청을 수행하기 이전에 Domain 생성Document 관리이 되어져 있어야 합니다.

    • 검색 서비스 구성을 위해서는 검색 기본 지식이 필요합니다.
    • 서비스 생성 시 설정한 Schema로 검색 수행
    • JSON 형태의 queryDSL 사용
    POST https://cloudsearch.apigw.ntruss.com/CloudSearch/real/v1/domain/{name}/document/search
    

    요청

    요청 파라미터

    파라미터명필수 여부타입제약 사항설명
    nameYesstring생성되어져 있는 Domain 이름

    overview

    Search Query에 대한 자세한 예제는 Cloud Search 사용가이드 - Search Query 사용 가이드를 참고하시기 바랍니다.

    {
      "search": {
          "start": (string|int),
    
          "display": (string|int),
    
          "result_format": (string),
    
          "search": {
            "[index_name]": {
              "[query_method]": [{
                "query": (string),
                "name": (string),
                "type": (string),
                "option": (string|bool),
                "ratio": (string|double),
                "term_extractor": (string),
                "stopword": (string)
              }]
            }
          },
    
          "sort": {
            "[sort_target]": (string)
          },
    
          "scope": {
            "[scope_target]": {
              "[scope_method]": (string|int|double|array)
            }
          },
    
          "key_scope": {
            "[scope_method]": (string|array)
          },
    
          "user_scope": (string),
    
          "highlighting": {
            "enable": (string|bool),
            "pre_tag": (string),
            "post_tag": (string),
            "[highlighting_option]": (string|bool)
          },
    
          "display_section": (string|array),
          "passage": {
            "[section_name]": {
               "passage_type": (string),
               "passage_option": (string),
               "max_length": (string)
            },
          },
    
          "aggregate": {
            "[docprop_name]": {
              "max": (string),
              "min": (string),
              "one": (string),
              "sum": (string)
            }
          },
    
          "result_processing": {
            "[section_name]": {
              "remove_duplicate": (string|bool)
            }
          },
    
          "setting": {
            "transfer_timeout": (string|int),
            "search_timeout": (string|int),
            "use_df": (string|bool),
            "reuse_term_extractor": (string|bool),
            "log_level": (string|list),
          }
        },
      "ip_str": (string)
    }
    

    요청 바디

    필드명필수 여부타입제약 사항설명
    startNoString, Integerdefault : 1검색 결과의 시작 랭킹
    displayNoString, Integerdefault : 20검색 결과의 개수
    result_formatNoStringjson검색 결과 포맷 지정, 현재는 json 포맷만 지원
    index_nameYesString기존에 생성된 색인 중 선택검색 할 색인의 이름
    queryListYesList<SearchQuery>SearchQuery.query_method가 "main"인 SearchQuery를 반드시 포함검색 요청 쿼리
    sortNoObject검색 결과 정렬 기준을 가지는 Map 형태의 Object
  • key : 정렬 기준 섹션
  • value : 정렬 방식 지정(desc, asc)
  • scopeNoList<SearchScope>제한 검색 설정 목록
    key_scopeNoObject제한 검색을 설정하는 Map 형태의 Object
  • key : 제한 검색 방식 선택
  • value : 제한 검색 방식에 따른 값 설정
  • key 옵션 종류
  • - exist, nexist: 지정한 값이 존재하는 문서 속성으로 검색 결과를 제한
    user_scopeNoString랭킹 코드 형태의 수식사용자가 직접 scope 수식을 입력, 입력된 수식은 'scope' 파라미터의 내용과 and 조건으로 추가됨
  • ex) price가 2000 초과 5000 미인 문서를 찾을 때,"(dp_price > '2000') and (dp_price < '5000')"
  • highlightingNoSearchHighlightingDefault: true검색 결과 구문 강조 설정
    display_sectionNoString, Array기존에 생성한 섹션 중 선택검색 결과로 보여줄 섹션을 지정(지정하지 않으면 모든 섹션 데이터 출력)
    예 : 가격과 이름만 결과로 출력하고 싶을 때, "price, name"
  • 여러 섹션 조합 가능
    예 : 브랜드와 이름을 하나의 결과로 출력하고 싶을 때, "brand+name"
  • passageNoList<SearchPassage>검색 결과 추출 방식 설정
    aggregateNoList<SearchAggregate>검색 결과 요약 설정 목록
    result_processingNoSearchResultProcessing검색 결과 후처리 설정
    settingNoSearchSetting검색 시 기타 환경 설정
    ip_strNoStringIP type format 이여야 함
    예 : 10.78.140.200

    응답

    필드명타입설명비고
    typestring응답 타입
    versionstring
    statusnumber응답 상태
    messagestring오류 메시지응답 결과가 오류일 경우 출력
    time_zonestring타임존
    elapsed_timenumber검색 시 걸린 시간
    termobject질의 내용index_name 및 SearhchQuery의 내용이 mapping 된 object
    resultobject검색 결과
    result.startnumber검색 결과의 시작 랭킹default : 1
    result.displaynumber검색 결과의 개수default : 20
    result.rankingstring랭킹 방식"clous"
    result.sort_bystring랭킹 기준default : "qds"
    result.total_countnumber총 검색 결과
    result.removed_countnumber삭제된 검색 결과
    result.item_countnumber검색 결과 갯수
    result.itemsArray검색된 문서Document 생성시 작성한 request[].content 데이터와 검색 정보를 포함하는 list
    result.items[]._ranknumber검색 랭킹
    result.items[]._keystring문서의 primary key
    result.items[]._qdsnumber검색 query와 해당 문서의 일치 정도

    응답 Status

    HTTP StatusDesc
    200OK(검색 완료)
    200No collection founded, insert document please
    400Bad Request
    401Unauthorized
    401there is no such service
    403Forbidden
    404Not Found
    500Internal Server Error

    요청 예시

    예시에서 사용되는 문서는, 검색 서비스 생성 예제와 동일합니다.

    일반 검색 요청 예시(검색어 "현대")

    POST https://cloudsearch.apigw.ntruss.com/CloudSearch/real/v1/domain/car_dev/document/search
    
    POST /CloudSearch/real/v1/domain/car_dev/document/manage HTTP/1.1
    Host:cloudsearch.apigw.ntruss.com
    Content-Type: application/json
    x-ncp-apigw-signature-v2: cDwtHuQeGmwWyNmwlN6XIGA66zge4iMXvfoDQNna05g=
    x-ncp-apigw-timestamp: 1545817618751
    x-ncp-iam-access-key: teGTwtcSEGA7fu28BGGi
    
    {
      "search": {
        "brand_name": {
          "main": {
            "query": "현대"
          }
        }
      },
      "ip_str": "10.78.140.200"
    }
    

    응답 예시

    {
      "version": "1.3.0",
      "status": 200,
      "type": "response",
      "time_zone": "+09:00",
      "elapsed_time": 0.000521,
      "term": {
        "brand_name": {
          "main": {
            "term_count": 1,
            "term_list": [
              "현대"
            ]
          }
        }
      },
      "result": {
        "start": 1,
        "display": 20,
        "ranking": "clous",
        "sort_by": "qds",
        "total_count": 2,
        "removed_count": 0,
        "item_count": 2,
        "items": [
          {
            "_rank": 1,
            "_key": "car-10001",
            "_qds": 0.8729686141014099,
            "brand": "<b>현대</b>",
            "docid": "car-10001",
            "name": "2018 싼타페",
            "price": 2815,
            "type": "중형"
          },
          {
            "_rank": 2,
            "_key": "car-10002",
            "_qds": 0.8729686141014099,
            "brand": "<b>현대</b>",
            "docid": "car-10002",
            "name": "2018 그랜저",
            "price": 2615,
            "type": "중형"
          }
        ]
      }
    }
    
    

    불용어 검색 요청 예시(검색어 "현대와 쉐보레")

    불용어 예시(rule name: "josa")

    {
      "type": "filter",
      "word_list": [
        "은", "는", "이", "가", "을", "를", "의", "와"
      ]
    }
    

    검색어와 매칭되는 모든 단어를 찾기 위해서는 "or" option이 필요합니다.

    POST https://cloudsearch.apigw.ntruss.com/CloudSearch/real/v1/domain/car_dev/document/search
    
    POST /CloudSearch/real/v1/domain/car_dev/document/manage HTTP/1.1
    Host:cloudsearch.apigw.ntruss.com
    
    x-ncp-apigw-signature-v2: cDwtHuQeGmwWyNmwlN6XIGA66zge4iMXvfoDQNna05g=
    x-ncp-apigw-timestamp: 1545817618751
    x-ncp-iam-access-key: teGTwtcSEGA7fu28BGGi
    
    {
      "search": {
        "brand_name": {
          "main": {
            "query": "현대와 쉐보레",
            "option":"or",
            "stopword":"josa"
          }
        }
      }
    }
    

    응답 예시

    {
      "version": "1.3.0",
      "status": 200,
      "type": "response",
      "time_zone": "+09:00",
      "elapsed_time": 0.000517,
      "term": {
        "brand_name": {
          "main": {
            "term_count": 2,
            "term_list": [
              "쉐보레",
              "현대"
            ]
          }
        }
      },
      "result": {
        "start": 1,
        "display": 20,
        "ranking": "clous",
        "sort_by": "qds",
        "total_count": 3,
        "removed_count": 0,
        "item_count": 3,
        "items": [
          {
            "_rank": 1,
            "_key": "car-10001",
            "_qds": 0.8729686141014099,
            "brand": "<b>현대</b>",
            "docid": "car-10001",
            "name": "2018 싼타페",
            "price": 2815,
            "type": "중형"
          },
          {
            "_rank": 2,
            "_key": "car-10002",
            "_qds": 0.8729686141014099,
            "brand": "<b>현대</b>",
            "docid": "car-10002",
            "name": "2018 그랜저",
            "price": 2615,
            "type": "중형"
          },
          {
            "_rank": 3,
            "_key": "car-3",
            "_qds": 0.8707408308982849,
            "brand": "<b>쉐보레</b>",
            "docid": "car-3",
            "name": "2018 말리부",
            "price": 2388,
            "type": "중형"
          }
        ]
      }
    }
    

    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.