zoukankan      html  css  js  c++  java
  • 实际程序调用IndexWriter* writer = NULL

    最近由于项目需要,原先用MySQL实现的全文检索功能已不能满足需求,于是乎想到了利用开源的全文检索项目,经人介绍看看了Lucene,Lucene使用Java实现的,目前是Apache Jakarta的项目之一,已经有一套完整和成熟的库,可惜本人对Java懂之甚少,便找了个C++ porting的版本,看了看里面的demo,动手体验了一下,感觉用“短小、强悍”形容再恰当不过了,十几行代码便能完成建立索引和进行搜索:

    建立索引:

    IndexWriter* writer = NULL;

    lucene::analysis::standard::StandardAnalyzer an;

    // 其中target是要建立的索引名

    char* target = "index_name";

    writer = new IndexWriter( target ,&an, true);

    Document* doc = new Document();

    doc->add( *Field::Text(_T("author"), _T("abc")) );

    writer->addDocument( doc );

    writer->optimize();

    writer->close();

    搜索:

    char* index = "index_name";

    char* searchfor= "abc";

    IndexSearcher s(index);

    standard::StandardAnalyzer analyzer;

    // searchfor 为需要搜索的字符串

    Query* q = QueryParser::parse(searchfor, _T("author"), &analyzer);

    // 返回匹配的结果集

    Hits* h = s.search(q);

    // 遍历结果集

    for ( int32_t i=0;i<h->length();i++ ){

    //  毎一条结果都是一个Document对象,引用也很方便

    Document* doc = &h->doc(i);

    // 结果是根据匹配度排序的:

    h->score(i);

    }

    当然,更多的代码能实现更多的功能,如Filter, Sort等都是Lucene中的功能,对于一般的中小型应用来说,已经足够了。另外建立索引和搜索的速度,目前还没有大规模的测试,从已用过的反馈来看都还是不错的。

    CLucene目前的版本还不支持中日韩等Unicode字符集,关于Lucene如何支持Unicode字符集,正在研究中,后面会与大家分享。

    下面是关于Lucene的一些资源

    Lucene项目主页:

    http://jakarta.apache.org/lucene/

    Lucene教程:

    http://www.darksleep.com/puff/lucene/lucene.html

    Lucene的.NET实现:dotLucene

    http://sourceforge.net/projects/dotlucene/

    Lucene作者Cutting的几篇论文和专利

    http://lucene.sourceforge.net/publications.html

    CLucene API 文档:

    http://clucene.sourceforge.net/doc/html/

  • 相关阅读:
    口腔溃疡
    English 好的报纸
    线段树
    归并排序 霍纳规则(法则) 统计逆序对
    xfce4桌面自动整理脚本
    解决xubuntu的thunar第一次启动慢
    解决ibus图标为红圈(图标丢失)
    linux tar 备份命令
    ubuntu中的Wine详解
    我的conky配置
  • 原文地址:https://www.cnblogs.com/cy163/p/1216424.html
Copyright © 2011-2022 走看看