clucene中字段Field属性解析

一, 是否存储(Stored)

是:将field域中的内容存储到文档域中。存储的目的,就是为了搜索页面显示取值用的。 STORE_YES

比如:商品名称、商品价格、商品id、商品图片地址

否:不将field域中的内容存储到文档域中。不存储,则搜索页面中没法获取该field域的值。 STORE_NO

比如:商品描述,由于商品描述在搜索页面中不需要显示,再加上商品描述的内容比较多,所以就不需要进行存储0

二 

是否索引(Indexed)

是:将分好的词进行索引,索引的目的,就是为了搜索。  INDEX_TOKENIZED

比如:商品名称、商品描述、商品价格、商品id

否:不索引,也就是不对该field域进行搜索。  INDEX_NO

三 是否保存保存词向量

是: 词的向量数据保存  TERMVECTOR_YES

否:不保存  TERMVECTOR_NO

 

以上信息在类Field中体现

下面是建立索引和搜索的例子

lucene::analysis::standard::StandardAnalyzer an;
    // 其中target是要建立的索引名
    char* target = "E:\\clucene-core-2.3.3.4\\testindex";
    IndexWriter*  writer = new IndexWriter(target ,&an, true);

    Document* doc = new Document();

    int flags = lucene::document::Field::STORE_YES
        | lucene::document::Field::INDEX_TOKENIZED;

    doc->add(*(new Field(_T("author"), _T("abc"), flags)));

    writer->addDocument(doc );

    writer->close();

    getchar();
    
    IndexSearcher s(target);
    standard::StandardAnalyzer analyzer;
    Query* query = QueryParser::parse(_T("abc"), _T("author"), &analyzer);

    // 返回匹配的结果集
    Hits* h = s.search(query);
    // 遍历结果集
    for ( int32_t i=0;i<h->length();i++ )
    {
        //  毎一条结果都是一个Document对象,引用也很方便
        Document* doc = &h->doc(i);

        // 结果是根据匹配度排序的:
        float fScroe = h->score(i);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值