lucene 查询器Query
1、TermQuery 匹配文档包含的一个词(term).它可以跟其它词条进行组合,然后用BooleanQuery和包装
Term term = new Term("keyword","饭店"); Term term2 = new Term("keyword","大"); Query query1 = new TermQuery(term); Query query2 = new TermQuery(term2); BooleanQuery query = new BooleanQuery(); query.add(query1,Occur.SHOULD); query.add(query2,Occur.SHOULD);最终的查询语句为"keyword:大 keyword:饭店",相当于两个词条组合成新的或关系。
2、BooleanQuery 匹配文档是否包含 queries,同TermQuery,PhraseQuery以及其它BooleanQuery组合使用。默认最大包含分项为1024,可以更改
BooleanClause是BolleanQuery的查询关系:MUST : "+" SHOULD:"" MUST_NOT:"-" 分别代表与或非三种关系也可以直接用+,空格,-三种来表示。最终的查询语句都是这种表示法如第1个最终查询语句 "keyword:大 keyword:饭店", 表示或的关系。
BooleanQuery localBooleanQuery = new BooleanQuery(); int size = 0; if (nidList != null) { size = nidList.size(); } for (int i = 0; (i < size) && (i < 1024); i++) { Term localTerm = new Term("line_id", nidList.get(i)); TermQuery localTermQuery = new TermQuery(localTerm); localBooleanQuery.add(localTermQuery, BooleanClause.Occur.SHOULD); }
3、WildcardQuery 通配符查询,与其它查询类似,*代表多个字符,?代表单个字符.
一共有三个定义:wildcard_string='*',匹配任意字符序列,包括空;wildcard_char='?',匹配单个字符序列;wildcard_escape='\\',专门匹配\
query.add(new WildcardQuery(new Term(field, "*"+keyword+"*")), BooleanClause.Occur.MUST);
4、PhraseQuery 直接用来查询写好的语句,例如“new work”,查询包括“new”或者"work"的记录,这个查询器通常与BooleanQuery结合来一块使用。这个查询器中有最著名的slop属性,该属性是用来确定词与词之间的间隔个数,例如
setSlop(2),则代表new 和work之间可以隔两个不相干的词,如果不设置则默认为0。
Query query = parser.parse("中华共和国"); PhraseQuery pquery = (PhraseQuery)query; pquery.setSlop(1);
5、PrefixQuery 前缀查询器,跟据Term的前缀来匹配。例如:App* ,查询以App开头的记录。
6、MultiPhraseQuery 多字段解析查询,跟PhraseQuery区别,在于多个字段。例如,在搜索Teram"Microsoft App*"的同时还可以加上“Microsoft”相当于prefix 使用 IndexReader.terms(Term), 和使用 MultiPhraseQuery.add(Term[]
* terms) 增加到这个查询
7、FuzzyQuery 模糊查询,该类继承自MUltiPhraseQuery类
基本上分为两大类:普通查询和解析查询。4、6属于后者,派生出N多相关的查询类.其它的查询API......
相关推荐
**Lucene4 全文检索详解** Lucene4 是 Apache 软件基金会的一个开源全文检索库,它为开发者提供了强大的文本搜索功能。作为一个高级的搜索引擎工具包,Lucene4 提供了完整的索引和搜索机制,使得在文件和数据库中...
### Lucene 使用正则表达式 #### 知识点概览 1. **Lucene简介** 2. **正则表达式(regex)在Lucene中的应用** 3. **regexQuery详解** 4. **示例代码解析** 5. **索引创建与查询流程** 6. **正则表达式的语法** #### ...
源码分析方面,`FuzzyQuery`类在Lucene的`org.apache.lucene.search`包下,其内部实现了模糊匹配的逻辑。`defaultMinSimilarity`和`defaultPrefixLength`是预设的默认值,可以根据实际应用的需求进行调整。此外,`...
npm install lucene-query-string-builder --save 特征 创建术语字符串时转义lucene特殊字符 包含所有lucene用途的运算符 简单的lucene.builder函数,用于定义lucene查询构建器 用法 让我们看看如何使用Lucene查询...
4. SpanNotQuery SpanNotQuery是一个非查询,用于查询指定字段中不包含某些词项的文档。例如,我们可以使用 SpanNotQuery 来查询字段 "f" 中不包含词项 "lazy" 的文档。 5. SpanFirstQuery SpanFirstQuery是一...
public void add(Query query, BooleanClause.Occur occur) BooleanClause用于表示布尔查询子句关系的类,包括: BooleanClause.Occur.MUST,BooleanClause.Occur.MUST_NOT,BooleanClause.Occur.SHOULD。 有以下6...
- **QueryParser**:解析用户输入的查询字符串,生成Lucene Query对象。 - **Searcher**:执行查询,返回匹配的文档。 这个文档搜索系统展示了SpringMVC、MyBatis和Lucene4的集成应用,它们各自发挥所长,共同构建...
Lucene常用代码详解 Lucene是一款功能强大且高效的搜索引擎,广泛应用于各种搜索应用程序中。为了更好地使用Lucene,需要了解其核心API和常用代码。本文将对Lucene部分常用代码进行详细解释,包括多字段搜索、多...
2. **Query构造**:Lucene提供多种Query类,如TermQuery、BooleanQuery、WildcardQuery等,可以根据需求构造复杂的查询条件。 3. **评分机制**:Lucene使用TF-IDF算法计算文档与查询的相关性,得分高的文档在搜索...
4. **查询处理**: 用户输入查询后,使用QueryParser解析查询字符串,生成Query对象。 5. **执行查询**: 使用IndexSearcher的search方法,传入Query对象,获取匹配的ScoreDoc数组,表示匹配的文档及其相关性评分。 ...
Lucene是一款强大的全文搜索引擎库,广泛应用于各种数据检索场景。在C#环境下,利用Lucene进行时间区间搜索是提高数据检索效率和精确度的重要手段。本篇将深入探讨如何在C#中实现Lucene的时间区间查询匹配,以及涉及...
首先,Lucene的核心概念包括文档(Document)、字段(Field)、索引(Index)和查询(Query)。文档是信息的基本单位,可以包含多个字段,每个字段都有特定的类型,如文本、日期或数字。索引过程将文档中的文本转换...
4. **搜索索引**:通过Query对象定义搜索条件,使用Searcher对象执行搜索,并获取结果集。 5. **排序和评分**:Lucene提供TF-IDF等算法对搜索结果进行评分,可以根据评分进行排序。 6. **结果展示**:将搜索结果转换...
3. 查询(Query):用户查询被转换成 Lucene Query 对象,如TermQuery、BooleanQuery等。这些查询对象与索引交互,寻找匹配的文档。解析查询字符串的类,如QueryParser,也是在这个阶段发挥作用。 4. 搜索(Search...
2. **设置Query解析器**:`var queryParser = new QueryParser(LuceneVersion.LUCENE_30, "content", analyzer);` 3. **获取高亮片段**:`var query = queryParser.Parse(queryText);`,然后使用`highlighter....
Lucene的核心架构主要分为三个部分:索引(Indexing)、查询(Query)和搜索(Searching)。首先,索引过程将原始文档转换为倒排索引(Inverted Index),这是一个经过优化的数据结构,便于快速查找包含特定词项的...
**标题:“Lucene5学习之SpellCheck拼写纠错”** 在深入探讨Lucene5的SpellCheck功能之前,首先需要理解Lucene是什么。Lucene是一个开源的全文检索库,由Apache软件基金会开发,它提供了高性能、可扩展的文本搜索...
lucene3.3的全部jar包ant-1.7.1.jar ant-junit-1.7.1.jar commons-beanutils-1.7.0.jar ...lucene-xml-query-parser-3.3.0.jar maven-ant-tasks-2.1.1.jar xercesImpl-2.9.1-patched-XERCESJ-1257.jar
查询语句通过`QueryParser`解析成`Query`对象,然后`IndexSearcher`会找到与查询匹配的文档。 3. **评分(Scoring)**:Lucene使用TF-IDF算法来评估文档与查询的相关性,给出一个评分。评分高的文档在搜索结果中...
在搜索阶段,Lucene支持多种查询类型,如标准查询(Standard Query)、短语查询(Phrase Query)、布尔查询(Boolean Query)以及模糊查询。模糊查询允许用户输入近似或部分关键词,系统会尝试找到与之最接近的匹配...