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);

    }





  • 相关阅读:
    Python
    版本控制
    后台
    前端
    提升权限 关闭系统
    SC命令(windows服务开启/禁用)
    获取当前电脑全部网络连接名字
    x64 win64编译环境下ADO链接Access数据库的问题解决
    Netsh命令-网络禁用开启
    windows主机防护
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2078424.html
Copyright © 2011-2022 走看看