作者:幸福的小馋豆 | 来源:互联网 | 2023-06-30 12:11
引言
Field类是文档索引期间很重要的类,控制着被索引的域值,下面先来看几种常用的域类型:
File[] listFiles = f.listFiles();
for (File file : listFiles) {
// 第三步创建document对象
Document document = new Document();
String file_name = file.getName();
// 创建域
Field fileNameField = new TextField("fileName", file_name, Store.YES);
long file_size = FileUtils.sizeOf(file);
Field fileSizeField = new LongField("fileSize", file_size, Store.YES);
// 文件路径
String file_path = file.getPath();
Field filePathField = new StoredField("filePath", file_path);
// 文件内容
String file_cOntent= FileUtils.readFileToString(file);
Field fileCOntentField= new TextField("fileContent", file_content, Store.NO);
document.add(fileNameField);
document.add(fileSizeField);
document.add(filePathField);
document.add(fileContentField);
// 第四步 使用 indexwriter对象将docum对象写人索引库,此过程进行索引创建。并将索引和document对象写入索引库
indexWriter.addDocument(document);
}
Solr中域的介绍
域的使用
我们在添加索引的时候,使用域必须是在配置文件中配置的,如果我们使用的索引在配置文件中不存在,将会报错,索引添加失败,此时如果我们的需求要求我们必须使用这个域名,则我们需要自己在配置文件添加这个域的定义,在对应的collection下面的schema.xml文件中添加:
动态域
为了更好的满足我们在项目中的需求,在原有的配置文件中,还有一些域采取了通配符的模式定义,这些域被称为动态域,只要满足这些域的模式,即可使用
复制域
复制域的目的是将多个域合并为一个域,这样我们按照多个条件查询的时候,可以值发送一个get请求就可以完成,如果我们定义了复制域,在我们保存数据的时候,我们只负责保存两个域,但是实际上在索引库中存储了三个域,复制域就是solr内部自动合并的,定格式如下:
自定义域类型
上面代码自定义了一个基于IK中文分词器的域类型。
小结
域是全文搜索的一个基础,所以我们需要好好掌握这个概念,因为lucene是solr的基础,所以在这小编将他们两个放在一起介绍了,后面博客中会继续讲解solr的相关知识