`
- 浏览:
165125 次
- 性别:
- 来自:
北京
-
Field.Index、 Field.Store解释、BooleanQuery查询
由于lucene版本间兼容性特别的坑..,这里就不再对Field.Index、 Field.Store做详细的解释[luncen 版本不同,Field.Index、 Field.Store属性也是不同的;以该版本的API为准]
网上摘超例子,可以更好的有助你理解。
例子如下:
我们以文章表为例.articleinfo.
有ID,title(标题),sumary(摘要),content(内容),userName(用户名)
其中title(标题),sumary(摘要)属于第一种情况,既要索引也要分词,也要存储.
content(内容)要分词,索引,但不存储.由于他太大了,而且界面也不用显示整个内容.
ID要存储,不用索引.因为没人用他来查询.但拼URL却很需要他.索引要存储.
userName(用户名)索引,但不分词.可用保存.为什么不分词?比如"成吉思汗",我不想被"成汉"搜索到.我希望要么"成吉思汗"或者"*吉思*"通配符搜到.
应用BooleanQuery进行组合查询时,条件之间的关系是由类BooleanClause.Occur控制的,BooleanClause.Occur中提供了三个参数值进行控制
BooleanClause.Occur.MUST
BooleanClause.Occur.MUST_NOT
BooleanClause.Occur.SHOULD
1、MUST和MUST表示“与”的关系,即“并集”。
2、MUST和MUST_NOT前者包含后者不包含。
3、MUST_NOT和MUST_NOT没意义
4、SHOULD与MUST表示MUST,SHOULD失去意义;
5、SHOUlD与MUST_NOT相当于MUST与MUST_NOT。
6、SHOULD与SHOULD表示“或”的概念。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
doc2.add(new Field("title", "用于索引第2个标题", Field.Store.YES, Field.Index.ANALYZED)); doc2.add(new Field("content", "建立索引内容", Field.Store.YES, Field.Index.ANALYZED)); // 添加文档至索引 ...
doc.add(new Field("content", "文章内容", Field.Store.YES, Field.Index.ANALYZED)); indexWriter.addDocument(doc); indexWriter.close(); ``` 2. 执行搜索:创建IndexReader和IndexSearcher,使用QueryParser...
a) 构造方法: Field(String name, String value, Field.Store.YES, Field.Index.ANALYZED) name: 域的名称, 只能是字符串. value: 域的值, 只能是字符串. Field.Store: 指定Field的值是否存储或怎样存储. NO(不...
doc.add(new Field("path", src.getCanonicalPath(), Field.Store.YES, Field.Index.NOT_ANALYZED)); StringBuilder sb = new StringBuilder(); BufferedReader br = new BufferedReader(new FileReader(src)...
4.2.2. Store类 5 4.2.3. Index类 5 4.2.4. 示例 5 4.3. IndexWriter类 5 4.3.1. 构造方法 5 4.3.2. 添加文档 5 4.3.3. 性能参数 6 4.3.4. 限制Field的长度 6 4.3.5. 复合索引格式 6 4.3.6. 优化索引 6 4.3.7. 示例 ...
6. **Query**: 查询对象,定义了用户希望查找的模式,如 TermQuery、PhraseQuery 或 BooleanQuery。 7. **ScoreDoc**: 包含每个匹配文档的评分和文档编号,用于排序和显示结果。 ### 示例代码片段 以下是一些基本...
- 使用 `Field` 对象添加数据,例如 `Field("NAME","USERNAME",Field.Store.YES,Field.Index.UN_TOKENIZED)`,这表示“NAME”字段的值为“USERNAME”,且该字段被存储(`Store.YES`)但不进行分词处理(`Index.UN_...
- `Field`类包含文本内容和属性,如`Field.Store.YES`表示该字段的值需要存储以便检索,`Field.Index.ANALYZED`表示该字段需要被分析并建立索引。 4. **分析器(Analyzer)**: 分析器负责将文本分解成可搜索的...
doc.Add(new Field("title", "Lucene.NET 全文搜索", Field.Store.YES, Field.Index.ANALYZED)); writer.AddDocument(doc); writer.Close(); // 搜索 DirectoryReader reader = DirectoryReader.Open(indexDir); ...
- 查询(Query):表示用户想要查找的信息模式,如TermQuery、BooleanQuery等。 - 结果集(Hit):搜索结果的集合,包括文档的评分和相关信息。 3. 创建搜索引擎的基本步骤: - 初始化分析器:根据需求选择或...
- 支持多种查询语法,如TermQuery、BooleanQuery等,提供与SQL类似的查询能力。 5. **Search**: - Query类:各种查询类型的实现,如TermQuery、BooleanQuery等,它们负责在索引中寻找匹配的文档。 - 提供搜索...
每个文档包含多个字段,如 `doc.add(new Field("title", "文档标题", Field.Store.YES, Field.Index.ANALYZED));` - **查询索引**:创建一个 Query 对象,如 `TermQuery new Term("content", "关键词")`,然后使用 ...
- **Field**:定义文档中的字段,如"title"和"content",`Store.YES`表示存储原始值,`Field.Index.TOKENIZED`表示字段内容会被分词并建立索引。 3. **搜索程序** - **Directory**:与索引建造相同,用于读取索引...
3. **创建文档**:定义Document对象,添加Field,如`doc.add(new TextField("content", "文本内容", Store.YES))`。 4. **添加文档到索引**:使用`indexWriter.addDocument(doc)`将文档写入索引。 5. **关闭...
import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.Term; import org.apache.lucene.search.BooleanClause; import org.apache.lucene.search.BooleanQuery; import org.apache.lucene....
4. 创建`Document`,添加`Field`,如`doc.add(new TextField("content", content, Field.Store.YES));` 5. 通过`indexWriter.addDocument(doc)`将文档添加到索引。 6. 查询时,使用`QueryParser`,如`Query query = ...
每个字段都有其存储和索引的属性,例如 `Store.YES` 表示存储字段的原始值,而 `Field.Index.TOKENIZED` 表示该字段应该被分词并建立索引。 - **索引(Index)**:索引是 Lucene 的核心,由一系列倒排索引表组成,...
doc.add(new TextField("content", "这是一个关于Lucene的初级示例", Field.Store.YES)); ``` 4. **索引文档**:使用`addDocument()`方法将文档添加到索引。 ```java indexWriter.addDocument(doc); ``` 5. **...
Lucene的核心概念包括文档(Document)、字段(Field)、索引(Index)和查询(Query)。首先,每个文档由一个或多个字段组成,字段内可以包含文本、数字或其他类型的数据。接着,Lucene通过分词器(Analyzer)对...
2. Query类:表示查询,例如TermQuery和BooleanQuery,它们定义了查询的逻辑结构。 总结,Lucene 2.9.1作为一个强大的全文搜索引擎,通过高效的索引结构和灵活的查询机制,为开发者提供了高效的信息检索能力。理解...