2.6 °Ë»ö±â´É È®Àå

MULTIPLE_RETRIEVE
RETRIEVE(integrate:SCHEMA_GROUP)
RETRIEVE(integrate:TABLE_GROUP)
RETRIEVE(integrate:SECTION_GROUP)
RETRIEVE_IN_RESULT(integrate:TABLE_GROUP)

Description
RETRIEVE¿Í µ¿ÀÏÇϳª ¿©·¯ Å×À̺íÀ» ±×·ìÇÎÇÏ¿© °Ë»ö °á°ú¸¦ °¡Á®¿Ã ¼ö ÀÖ´Ù. °Ë»ö ´ë»óÀÌ µÇ´Â ¸ðµç Å×À̺íµéÀÇ ½ºÅ°¸¶´Â °°¾Æ¾ß Çϸç RETRIEVE¿Í ´Þ¸® Integrate ¿É¼ÇÀ» »ç¿ëÇÒ ¼ö ¾ø´Ù. ±×·ì ÁöÁ¤Àº ±×·ìÇÎ µÉ Å×À̺íµéÀÇ ¼ö¸¦ group_counts¿¡ ³Ö¾îÁØ´Ù. ¼ø¼­´Â Å×ÀÌºí ¸®½ºÆ®¿¡ ³ÖÀº Å×À̺íµéÀÇ ¼ø¼­¸¦ µû¸¥´Ù.
°á°ú´Â document_groups À¸·Î ³ª¿À°Ô µÇ¸ç °¢ ±×·ì º° set_id¿Í °Ë»ö °Ç¼ö, ÃßÁ¤ °Ç¼ö°¡ ÃßÃâµÈ´Ù. ¶Ç, ±×·ìº° °Ç¼ö¸¦ ¸ðµÎ ´õÇÑ total_df ¿Í estimated_total_dfµµ °á°ú·Î Á¦½ÃÇÑ´Ù. ´ëÇ¥ set_id´Â ´ç¿¬È÷ ¾ø´Ù.

InParameter

vector table_namelist; [Å×À̺í À̸§À» ÁöÁ¤, Àüü Å×À̺íÀ» ÁöÁ¤ÇÏ·Á¸é ALL_TABLES¸¦ »ç¿ëÇÏ¸é µÊ]
int space_operator; [SPACE_AND | SPACE_OR | SPACE_NOT | SPACE_WITHIN | SPACE_NEAR]
int method; [BOOLEAN_MODEL | VECTOR_MODEL]
string query; [»ç¿ëÀÚ°¡ ¹®¹ý¿¡ ¸Âµµ·Ï ÀÛ¼ºÇؼ­ ÁöÁ¤ÇÔ(UTF8·Î ÀúÀåµÇ¾î¾ß ÇÔ)]
int term_expansion; [NO_QUERY_TERM_EXPANSION | FULL_QUERY_TERM_EXPANSION | PARTIAL_QUERY_TERM_EXPANSION]
int remove_chars_word; [NO_REMOVE_CHARS_WORD | REMOVE_SINGLE_CHAR_WORD]
bool order; [ASCENDING | DESCENDING]
vector group_counts; table_namelist¿¡ ÁöÁ¤µÈ Å×À̺íµéÀ» ±×·ìÇÎÇÒ °ªÀ» ÁöÁ¤
[ÁÖ] group_counts¸¦ Á¦¿ÜÇÑ ¸ðµç ÆÄ¶ó¹ÌÅÍ´Â RETRIEVE¿¡¼­ »ç¿ëÇÏ´Â ÆÄ¶ó¹ÌÅÍ¿Í µ¿ÀÏÇÏ´Ù

OutParameter

unsigned int total_df; [°Ë»ö°á°ú °Ç¼ö]
unsigned int estimated_total_df; [°Ë»ö ¹®¼­ ÃßÁ¤Ä¡(VECTOR_MODEL¿¡¼­ »ç¿ë)]
vector document_groups; [±×·ì´ç °á°ú]
long unsigned int service_time; [½ÇÇà½Ã°£]

Example

    // °Ë»ö ´ë»ó Å×À̺í ÁöÁ¤
    table_namelist.push_back("blue01");
    table_namelist.push_back("blue02");
    table_namelist.push_back("blue03");

    space_op = SPACE_AND;   // SPACE_AND | SPACE_OR | SPACE_NOT | SPACE_WITHIN | SPACE_NEAR
    ret_model = BOOLEAN_MODEL;  // BOOLEAN_MODEL | VECTOR_MODEL

    // ¿äûÀ» ó¸®ÇÒ Å¬·¡½º¸¦ »ý¼º
    // »ý¼ºÀÚÀÇ ¸Å°³º¯¼ö·Î ó¸®ÇÒ DB ¼­ºñ½ºÀÇ ÁÖ¼Ò¿Í Æ÷Æ®¹øÈ£¸¦ ÀÔ·Â
    //ClientLIB clientLib(SERVER_IP, SERVER_PORT);
    ClientLIB clientLib(get_kristald_ip(), get_kristald_port());

    Cparameter_t p_in, p_out;       // ¸Å°³º¯¼ö Ŭ·¡½º ¼±¾ð 

    p_in.table_namelist = table_namelist;   // °Ë»ö ´ë»ó Å×À̺í ÁöÁ¤
    p_in.space_operator = space_op;     // °ø¹é ó¸® ¹æ¹ý ÁöÁ¤
    p_in.method = ret_model;        // °Ë»ö ¸ðµ¨ ÁöÁ¤
    p_in.term_expansion = FULL_QUERY_TERM_EXPANSION;

    query = "(ABS : Á¤º¸)";
    string u_query; // ÁúÀǸ¦ UTF-8·Î º¯È¯
    EUCKR_TO_UTF8(query, u_query);
    p_in.query = u_query;           // ÁúÀǾî ÁöÁ¤

    // ±×·ì ÁöÁ¤
    p_in.group_counts.push_back(1); // GROUP1 --> BLUE01    
    p_in.group_counts.push_back(2); // GROUP2 --> BLUE02, BLUE03

    // °Ë»ö ¼öÇà
    RedirectStdoutInit();
    int ret_val = clientLib.Request(MULTIPLE_RETRIEVE, p_in, p_out);
    RedirectStdoutClose();
    if (ret_val != 0) {
        cout << "ERROR : " << p_out.errmsg << "(" << p_out.errcode << ")" << endl;
        return -1;
    }

    // Àüü (GROUP-1°ú GROUP-2)¿¡ ´ëÇÑ °Ë»ö °á°ú
    cout << "=========================================" << endl;
    cout << " Àüü °Ë»ö°á°ú" << endl;
    cout << "=========================================" << endl;
    cout << " °Ë»ö °á°ú ¹®¼­ ¼ö : " << p_out.total_df << endl;
    cout << " °Ë»ö °á°ú ¿¹»ó ¼ö : " << p_out.estimated_total_df << endl;
    cout << " °Ë»ö ¼Ò¿ä ½Ã°£ : " << p_out.service_time<< " (ms)" << endl;
    cout << "=========================================" << endl;

    cout << "[´ÙÀ½À¸·Î ³Ñ¾î°¡±â À§ÇØ ¾Æ¹« Ű³ª ´©¸£¼¼¿ä]" << endl;
    getchar();

    // °¢°¢ÀÇ °á°ú¿¡ ´ëÇÑ "¼Â¹øÈ£"¿Í "°á°ú°Ç¼ö"¸¦ Ãâ·Â
    // ¾Æ·¡ °á°ú¸¦ ÀÌ¿ëÇÏ¿© °³º° °Ë»ö°á°ú Ãâ·Â °¡´É
    for (int i = 0; i < p_out.document_groups.size(); i++) {
        cout << "---------------------------------------------------" << endl;
        cout<<"[±×·ì "<< i <<"]" << endl;
        cout << "\t" << "¼Â¹øÈ£ : "<< p_out.document_groups[i].set_id << endl;
        cout << "\t" << "°Ë»ö°á°ú °Ç¼ö : " << p_out.document_groups[i].df_per_group << endl;
        cout << "\t" << "°Ë»ö°á°ú ÃßÁ¤Ä¡ : " << p_out.document_groups[i].estimated_df_per_group << endl;
        }
        cout << "==============================================================================" << endl << endl;

    return 0;