Directory:
Directory这个类代表了 Lucene 的索引的存储的位置,这是一个抽象类,
它目前有两个实现,第一个是 FSDirectory,它表示一个存储在文件系统中的索引的位置。
第二个是 RAMDirectory,它表示一个存储在内存当中的索引的位置。
Document:
Document文档类似数据库中的一条记录,可以由好几个字段(Field)组成,并且字段可以套用不同的类型
Document 是用来描述文档的,这里的文档可以指一个 HTML 页面,一封电子邮件,或者是一个文本文件。
一个 Document 对象由多个 Field 对象组成的。
可以把一个 Document 对象想象成数据库中的一个记录,而每个 Field 对象就是记录的一个字段。
IndexWriter
IndexWriter 是 Lucene 用来创建索引的一个核心的类,
他的作用是把一个个的 Document 对象加到索引中来。
例如:IndexWriter writer = new IndexWriter(directory, new StandardAnalyzer(), false);
第一个参数是要索引建立在哪个目录里
第二个参数是新建一个文本分析器,这里用的是标准的大家也可以自己写一个
第三个参数如果是true,在建立索引之前先将目录清空。
Analyzer
在一个文档被索引之前,首先需要对文档内容进行分词处理,
这部分工作就是由 Analyzer 来做的。Analyzer 类是一个抽象类,它有多个实现。
针对不同的语言和应用需要选择适合的 Analyzer。
Analyzer 把分词后的内容交给 IndexWriter 来建立索引
IndexSearcher
IndexSearcher是用来在建立好的索引上进行搜索的。
它只能以只读的方式打开一个索引,所以可以有多个IndexSearcher的实例在一个索引上进行操作。
Term是搜索的基本单位,一个Term对象有两个String类型的域组成。
生成一个Term对象可以有如下一条语句来完成:
Term term = new Term(“fieldName”,”queryWord”);
其中第一个参数代表了要在文档的哪一个Field上进行查找,第二个参数代表了要查询的关键词。
Term term = new Term(fieldNames[i], keyWord);
FuzzyQuery用来搜索相似的term
FuzzyQuery fQuery = new FuzzyQuery(term);
Query这是一个抽象类,他有多个实现,
比如TermQuery, BooleanQuery, PrefixQuery.
这个类的目的是把用户输入的查询字符串封装成Lucene能够识别的Query。
如果想输入关键字而不想关心是在哪个Field里的就可以用MultiFieldQueryParser了。
Query keyQuery = MultiFieldQueryParser.parse(keyWord, fieldNames,
conditions, new StandardAnalyzer());
BooleanClause.Occur[]的三种类型:
MUST : + and
MUST_NOT : - not
SHOULD : or
Hits是用来保存搜索的结果的
分享到:
相关推荐
费了好大的劲终于搜集齐了lucene压缩包,该包中包含了lucene开发中用到的各种jar包,如lucene-core-2.0.0.jar,lecene-demos-2.0.0.jar,还有常用的分词包(lucene-analyzers-2.0.0.jar)和技术文档
StandardAnalyzer是最常用的分析器,它遵循Unicode文本分析标准,能处理多种语言的文本。SimpleAnalyzer则相对简单,只进行简单的分词,而StopAnalyzer则会过滤掉常见的停用词,如“的”、“是”等。 除了预定义的...
3. **内存和文件系统操作**: `lucene-memory.jar`包含了内存索引的支持,而`lucene-misc.jar`提供了杂项工具,可能包括一些不常用但有用的特性。`lucene-store.jar`处理底层的存储机制,包括文件系统和内存存储。 4...
- **作用**:此包中的类主要用于对需要建立索引的文本进行分词、过滤等预处理工作。它是Lucene全文检索的基础。 - **核心类**: - **Analyzer**:抽象类,管理对文本内容的切分词规则。Analyzer类用于将文档分割成...
Apache Commons包中的一个,包含了一些Bean工具类类。必须使用的jar包。 commons-collections.jar Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大 commons-lang.jar Apache ...
Apache Commons包中的一个,包含了一些Bean工具类类。必须使用的jar包。 commons-collections.jar Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大 commons-lang.jar Apache ...
`javax.mail.internet`包中的类如`MimeMessage`和`InternetAddress`是常用的工具。 9. **SQLServer驱动包**: 要连接到SQL Server数据库,需要Microsoft提供的JDBC驱动,通常名为`mssql-jdbc.jar`。它实现了JDBC...
在Java中,我们可以使用`java.io`包中的`BufferedReader`类来读取文件内容。通过创建一个`BufferedReader`实例,然后调用`readLine()`方法逐行读取文件,直到文件结束。这样可以避免一次性加载整个文件导致内存溢出...
JarCollectionUtil类使用了***mons.io包中的FileUtils类的copyFile方法来实现文件的复制。FileUtils类提供了非常方便的静态方法来处理文件和目录,其copyFile方法可以将源文件复制到目标位置,并且在复制过程中会...
在解压的Solr包中找到`solr-4.10.3\example\solr`目录并将其复制到指定位置。 - 修改文件夹名称为`solrhome`(非必须)。 ##### 3. 配置SolrCore - **配置文件**: 主要是对`SolrCore`目录下的`conf/solrconfig.xml`...
它集成了大量的常用库,如数据访问、安全、Web等,使得开发者可以“零配置”或少量配置即可快速启动项目。同时,SpringBoot还提供了内置的Tomcat服务器,使得应用可以直接运行在jar包中,提高了部署的便捷性。 二、...
2. **函数式接口**:如`java.util.function`包中的接口,支持函数式编程风格。 3. **Stream API**:用于处理集合数据的新API,支持串行和并行数据处理。 4. **日期和时间API**:`java.time`包替代了过时的`java.util...