zoukankan      html  css  js  c++  java
  • egg 接口实例

    实例

    编译:gcc -g -Wall -O0 test.c -o test `pkg-config glib-2.0 --cflags --libs` -lscholar -legg2

    #include <egg2/Egg2.h>
    #include <scholar/ImLexAnalyzer.h>
    #include <scholar/ImTokenList.h>
    #include <scholar/ImCnLexAnalyzer.h>
    #include <scholar/ImCwsLexAnalyzer.h>
    int main()
    {
    HEGGDIRECTORY hDirectory = eggDirectory_open("/ape/ImRoBot5/index/bas/k2d/");
    HEGGINDEXREADER hIndexReader = eggIndexReader_open(hDirectory);
    HEGGINDEXSEARCHER hIndexSearcher = eggIndexSearcher_new(hIndexReader);
    HEGGQUERY h1, h2, h3;
    h1 = eggQuery_new_string("title", "new", 3, ANALYZER_CWSLEX);
    h2 = eggQuery_new_string("content", "new", 3, ANALYZER_CWSLEX);
    // h2 = eggQuery_new_string("body", "some description", 16, p_la);
    // h3 = eggQuery_new_int32("price", 199);
    // h2 = eggQuery_and(h3, h2);
    h1 = eggQuery_or(h2, h1);
    // h3 = h2 = 0;
    HEGGTOPCOLLECTOR hTopCollector = eggTopCollector_new(0);
    int ret = eggIndexSearcher_search_with_query(hIndexSearcher, hTopCollector, h1);
    if (ret == EGG_TRUE)
    {
    eggTopCollector_normalized(hTopCollector, EGG_TOPSORT_SCORE);
    // eggTopCollector_normalized(hTopCollector, EGG_TOPSORT_NOT);
    HEGGSCOREDOC lp_score_doc = eggTopCollector_top_docs(hTopCollector);
    count_t cnt = eggTopCollector_total_hits(hTopCollector);
    printf("have hit %u documents\n", cnt);

    if (cnt > 0)
    {
    printf("last document: id[%llu]\n", lp_score_doc[cnt-1].idDoc);
    HEGGDOCUMENT lp_eggDocument = EGG_NULL;
    eggIndexReader_get_document(hIndexReader,
    lp_score_doc[cnt-1].idDoc, &lp_eggDocument);
    HEGGFIELD lp_field = eggDocument_get_field(lp_eggDocument, "content");
    unsigned len = 0;
    char *val = eggField_get_value(lp_field, &len);
    printf("last document: body[%.*s]\n", len, val);
    lp_field = 0;
    eggDocument_delete(lp_eggDocument);
    }
    }

    eggTopCollector_delete(hTopCollector);
    eggQuery_delete(h1);
    eggIndexSearcher_delete(hIndexSearcher);
    eggIndexReader_close(hIndexReader);
    eggDirectory_close(hDirectory);
    }

    新版egg

     #include <egg2/Egg2.h>
    #include <scholar/ImLexAnalyzer.h>
    #include <scholar/ImTokenList.h>
    int main()
    {
    HEGGHANDLE hEggHandle = eggCluster_open("192.168.1.135:4000:basnews");
    HEGGINDEXREADER hIndexReader = eggIndexReader_open(hEggHandle);

    HEGGINDEXSEARCHER hIndexSearcher = eggIndexSearcher_new(hIndexReader);
    HEGGQUERY h1, h2, h3;
    h1 = eggQuery_new_string("content", "日本的摄影记者", strlen("日本的摄影记者"), ANALYZER_CWSLEX);
    h2 = eggQuery_new_int32("age", 20);
    h3 = eggQuery_new_string("name", "小明", strlen("小明"), EGG_NULL);
    h2 = eggQuery_and(h3, h2);
    h1 = eggQuery_or(h2, h1);
    h3 = h2 = 0;

    //填0取所有结果,非0按填的值取个数
    HEGGTOPCOLLECTOR hTopCollector = eggTopCollector_new(0);

    //对最后结果进行排序
    //EGG_TOPSORT_WEIGHT: 按document的weight排序
    //EGG_TOPSORT_SCORE: 按查询关键字的相关度排序(打分排序)
    //EGG_TOPSORT_NOT: 不排序
    //不调该函数默认是EGG_TOPSORT_NOT
    eggTopCollector_set_sortType(hTopCollector, EGG_TOPSORT_SCORE);
    int ret = eggIndexSearcher_search_with_query(hIndexSearcher, hTopCollector, h1);
    if (ret == EGG_TRUE)
    {


    HEGGSCOREDOC lp_score_doc = eggTopCollector_top_docs(hTopCollector);
    count_t cnt = eggTopCollector_total_hits(hTopCollector);
    printf("have hit %u documents\n", cnt);

    if (cnt > 0)
    {
    HEGGDOCUMENT lp_eggDocument = EGG_NULL;

    eggIndexReader_get_document(hIndexReader,
    lp_score_doc[cnt-1].idDoc, &lp_eggDocument);

    HEGGFIELD lp_field = eggDocument_get_field(lp_eggDocument, "content");
    unsigned len = 0;
    char *val = eggField_get_value(lp_field, &len);
    lp_field = 0;
    eggDocument_delete(lp_eggDocument);
    }
    }
    eggTopCollector_delete(hTopCollector);
    eggQuery_delete(h1);
    eggIndexSearcher_delete(hIndexSearcher);
    eggIndexReader_close(hIndexReader);
    eggCluster_close(hEggHandle);

    }





  • 相关阅读:
    02_Docker在CentOS 6和CentOS 7下的安装
    01_Docker概念简介、组件介绍、使用场景和命名空间
    nginx配置
    JavaScript高级 函数表达式 《JavaScript高级程序设计(第三版)》
    关于最近的一些事情
    3、《构》-3习题(6-9)
    关于叛逆的疑问和感想
    2、《构》-3习题(1-5)
    1、随笔+《构》-3
    svn 迁移至git操作手册
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2078424.html
Copyright © 2011-2022 走看看