一, 是否存储(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);
}