Lucene Field域类型

Field 属性:

  Field是文档中的域,包括Field名和Field值两部分,一个文档可以包括多个Field,Document只是Field的一个承载体,Field值即为要索引的内容,也是要搜索的内容。

    是否分词 (tokenized)
      是:作分词处理,即将Field值进行分词,分词的目的是为了索引。
        比如:商品名称、商品描述等,这些内容用户要输入关键字搜索,由于搜索的内容格式大、内容多需要分词后将语汇单元建立索引
      否:不作分词处理
        比如:商品id、订单号、身份证号等

    是否索引 (indexed)

      是:进行索引。将Field分词后的词或整个Field值进行索引,存储到索引域,索引的目的是为了搜索。
        比如:商品名称、商品描述分析后进行索引,订单号、身份证号不用分词但也要索引,这些将来都要作为查询条件。
      否:不索引。
        比如:图片路径、文件路径等,不用作为查询条件的不用索引。

    是否存储 (stored)
      是:将Field值存储在文档域中,存储在文档域中的Field才可以从Document中获取。
        比如:商品名称、订单号,凡是将来要从Document中获取的Field都要存储。
      否:不存储Field值
        比如:商品描述,内容较大不用存储。如果要向用户展示商品描述可以从系统的关系数据库中获取。

Field 常用类型:

  

   

// 2. 创建Document文档对象
for (Sku sku : skus) {
    Document document = new Document();

    // 创建域对象,并且放入文档对象中
    document.add(new StringField("id", sku.getId(), TextField.Store.YES));
    document.add(new TextField("name", sku.getName(), TextField.Store.YES));
    document.add(new DoublePoint("price", sku.getPrice()));
    document.add(new StoredField("price", sku.getPrice()));
    document.add(new StoredField("image", sku.getImage()));
    document.add(new StringField("categoryName", sku.getCategoryName(), TextField.Store.YES));
    document.add(new StringField("brandName", sku.getBrandName(), TextField.Store.YES));

    // 将文档对象放入到文档集合中
    docList.add(document);
}

 

posted @ 2020-03-22 17:48  糖不甜,盐不咸  阅读(612)  评论(0编辑  收藏  举报