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); }
来源:https://www.cnblogs.com/roadlandscape/p/12547304.html