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/

  • 相关阅读:
    uva 147 Dollars
    hdu 2069 Coin Change(完全背包)
    hdu 1708 Fibonacci String
    hdu 1568 Fibonacci
    hdu 1316 How Many Fibs?
    poj 1958 Strange Towers of Hanoi
    poj 3601Tower of Hanoi
    poj 3572 Hanoi Tower
    poj 1920 Towers of Hanoi
    筛选法——素数打表
  • 原文地址:https://www.cnblogs.com/cy163/p/1216424.html
Copyright © 2011-2022 走看看