域选项

摘要:
包括:id,title,author,content 7int[]ids={1,2,3};8String[]title={“您好”,“Iloveyou”,“上午”};9String[]作者={“Mike”,“HanMeimei”,“Tom”};10String[]contents={“您好,MyNameIsMike”,“Tome,ILoveYou”,“GoodMoring,对不起,”};1112IndexWriterwriter=null;1314try{15//1.创建Directory16Directorydirectory=FSDirectory.open;1718//2.创建Writer19IndexWriterConfig=newIndexWriter配置;2122writer=newIndexMriter;2324//3.创建文档25Documentdoc=null;2627//4。设置Field28//文档:文件,相当于数据表中的记录29//域:数据中的列(字段)称为域,其中域是文档30的属性,用于{31doc=newDocument();3233//Domain属性34//Store35//YES_Analysized:无分词。

【名词】

  • 文档 :文件,相当于数据表中的一条记录
  • 域(Field) :数据中一列(字段)就称为域,在这里域就是文档的一个属性

Field.Store

  • YES :在索引文件中存储域的内容,存储的内容可以方便文档恢复
  • NO :不在索引文件中存储域内容,恢复时无法完整进行恢复(无法通过doc.get()进行获取)

注:实际使用时一般正文是不会进行存储的

Field.Index

  • ANALYZED :表示进行分词和索引,一般多用于标题和正文
  • NOT_ANALYZED :表示不进行分词。但进行索引。一般用于Id、身份证号码、电话等精确查找的内容
  • ANALYZED_NO_NORMS :表示进行分词并索引,但不存储Norms(包含了索引的权值信息)信息。正常情况下,搜索列表是按照权值进行排序的。做的比较好的是Google
  • NOT_ANALYZED_NO_NORMS :即不分词也不存储Norms信息
  • No :不进行索引和分词

【示例】

创建索引:

 1     /**
 2      * 创建索引
 3      */
 4     @Test
 5     public void testIndex(){
 6         //存储3篇文章的信息。包括:id、标题、作者、内容
 7         int[] ids = {1,2,3};
 8         String[] titles = {"Hello","I love you","morning"};
 9         String[] authors = {"Mike","HanMeimei","Tom"};
10         String[] contents= {"Hello,My Name Is Mike","Tome,I Love You","Good Moring,I'm so sorry,"};
11         
12         IndexWriter writer = null;
13         
14         try {
15             //1、创建Directory
16             Directory directory = FSDirectory.open(new File("E:\lucene\index2"));
17             
18             //2、创建Writer
19             IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_35,
20                     new StandardAnalyzer(Version.LUCENE_35));
21             
22             writer = new IndexWriter(directory, config);
23             
24             //3、创建Document
25             Document doc = null;
26             
27             //4、设置Field
28             //文档            :文件,相当于数据表中的一条记录
29             //域(Field)        :数据中一列(字段)就称为域,在这里域就是文档的一个属性
30             for(int i = 0;i<ids.length;i++){
31                 doc = new Document();
32                 
33                 //域属性
34                 //Store(配置域的存储方式)
35                 //YES        :在索引文件中存储域的内容,存储的内容可以方便文档恢复
36                 //NO            :不在索引文件中存储域内容,恢复时无法完整进行恢复(无法通过doc.get()进行获取)
37                 //实际使用时一般正文是不会进行存储的
38                 
39                 //Index(配置域的索引选项)
40                 //ANALYZED                :表示进行分词和索引,一般多用于标题和正文
41                 //NOT_ANALYZED        :表示不进行分词。但进行索引。一般用于Id、身份证号码、电话等精确查找的内容
42                 //ANALYZED_NO_NORMS    :表示进行分词并索引,但不存储Norms(包含了索引的权值信息)信息
43                 //正常情况下,搜索列表是按照权值进行排序的。做的比较好的是Google
44                 //NOT_ANALYZED_NO_NORMS :即不分词也不存储Norms信息
45                 //No                            :不进行索引和分词
46                 
47                 //为文档添加域(属性)
48                 String id = Integer.toString(ids[i]);
49                 doc.add(new Field("id",id,Field.Store.YES,Field.Index.NOT_ANALYZED_NO_NORMS));
50                 doc.add(new Field("title",titles[i],Field.Store.YES,Field.Index.NOT_ANALYZED));
51                 doc.add(new Field("author",authors[i],Field.Store.YES,Field.Index.NOT_ANALYZED));
52                 doc.add(new Field("content", contents[i],Field.Store.NO,Field.Index.ANALYZED));
53                 
54                 writer.addDocument(doc);
55             }
56         } catch (IOException e) {
57             e.printStackTrace();
58         }
59         finally{
60             if(writer != null)
61                 try {
62                     writer.close();
63                 } catch (CorruptIndexException e) {
64                     // TODO Auto-generated catch block
65                     e.printStackTrace();
66                 } catch (IOException e) {
67                     // TODO Auto-generated catch block
68                     e.printStackTrace();
69                 }
70         }
71     }

搜索;

 1 /**
 2      * 搜索
 3      */
 4     @Test
 5     public void testSearch(){
 6         IndexReader reader =null;
 7         try {
 8             //1、创建Directory
 9             Directory directory = FSDirectory.open(new File("E:\lucene\index2"));
10             
11             //2、创建IndexReader
12             reader = IndexReader.open(directory);
13             
14             //应用较多
15             System.out.println("索引文件数:" + reader.numDocs());
16             System.out.println("最大文件数:" + reader.maxDoc());
17             
18             
19             
20         } catch (IOException e) {
21             // TODO Auto-generated catch block
22             e.printStackTrace();
23         }
24         finally{
25             if (reader != null) {
26                 try {
27                     reader.close();
28                 } catch (IOException e) {
29                     // TODO Auto-generated catch block
30                     e.printStackTrace();
31                 }
32             }
33         }
34     }

【最佳实践】

域选项第1张

【文件类型】

1) segment

表示一个完整的索引文件。搜索时通过该文件进行搜索。他是索引的重要文件。

 

2) fnm

存储了索引中所有Field的信息。

3) fdxfdt

.fdx.fdt是综合使用的两类文件,其中.fdt类型文件用于存储具有Store.YES属性的Field数据。而.fdx类型文件则是一个索引,用于存储Document在下面代码就是创建索引的代码。

4) tiitis

.tis文件用于存储分词后的分词(Term,相当于字典的页),.tii就是它的所有文件(相当于字典的目录),它标明了每个.tis文件中分词的位置.

5) frq

存储了分词在文中出现的频率。

6) prx

存储了分词在每次出现的位置。

7) nrm

存储文档的标准引子。一般用该因子乘以命中次数。

8) del

存储删除之后的索引信息。

注:文件不能随意删除,否则可能造成搜索失败(出现错误)

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇超柔磨绒印花空调被(200*230cm) 凡客诚品工商银行团购专区 VANCL凡客诚品ecshop 二次开发 函数列表大全下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Apache Hudi使用问题汇总(一)

1.如何写入Hudi数据集 通常,你会从源获取部分更新/插入,然后对Hudi数据集执行写入操作。如果从其他标准来源(如Kafka或tailf DFS)中提取数据,那么DeltaStreamer将会非常有用,其提供了一种简单的自我管理解决方案,可将数据写入Hudi。你还可以自己编写代码,使用Spark数据源API从自定义源获取数据,并使用Hudi数据源写入H...

数据库引擎调整顾问

 SQL Server提供了一个被称为数据库引擎调整顾问的工具。这个工具帮助为一个给定的工作负载确认一组最优的索引,而不需要对数据库结构或SQL Server内部结构的深入了解。它还能为一小部分有问题的查询建议调整选项。除了好处该工具也有坏处。应该正确地使用。 一、数据库引擎调整顾问机制   可以直接选择SQL Server 2008=》性能工具=》数据库...

NLP常用Python开发工具

一、Numpy NumPy系统是Python的一种开源的数值计算包。 包括: 1、一个强大的N维数组对象Array; 2、比较成熟的(广播)函数 库; 3、用于整合C/C++和Fortran代码的工具包; 4、实用的线性代数、傅里叶变换和随机数生成函数。 numpy和稀疏矩阵运算包scipy配合使用更加方便。 安装: pip install numpy 二...

MySQL3:索引

什么是索引 索引是对数据库表中一列或者多列的值进行排序的一种结构,所引用于快速找出在某个列中有一特定值的行。不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行。表越大,查询数据所花费的时间越多,如果表中查询的列有一个索引,MySQL能快速到达一个位置去搜索数据文件,而不必查看所有数据。 索引的含义和特点 索引是一个单独的、存储在磁盘上的...

Select 语句执行顺序以及如何提高Oracle 基本查询效率

作者:技术改变世界 今天把这几天做的练习复习了一下,不知道自己写得代码执行的效率如何以及要如何提高,于是乎上网开始研究一些材料,现整理如下: 首先,要了解在Oracle中Sql语句运行的机制。以下是sql语句的执行步骤:1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义。2)语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权...

CUSPARSE 第三章 CUSPARAE索引和数据格式

(纯属自学笔记,部分翻译,不会翻译的不翻译) 3.1 索引基本格式       该函数库支持 zero- and one-based 索引. The index base 是通过 cusparseIndexBase_t 选择, 且是一个独立参数,或者是矩阵形容器 cusparseMatDescr_t type的一部分 3.2 向量格式      略 3.3...