`
wangmored
  • 浏览: 164650 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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表示“或”的概念。
分享到:
评论

相关推荐

    lucene基本使用,适合初学者

    doc2.add(new Field("title", "用于索引第2个标题", Field.Store.YES, Field.Index.ANALYZED)); doc2.add(new Field("content", "建立索引内容", Field.Store.YES, Field.Index.ANALYZED)); // 添加文档至索引 ...

    lucene最新版本3.3的基本功能用法(IK分词是3.2.8)

    doc.add(new Field("content", "文章内容", Field.Store.YES, Field.Index.ANALYZED)); indexWriter.addDocument(doc); indexWriter.close(); ``` 2. 执行搜索:创建IndexReader和IndexSearcher,使用QueryParser...

    lucene2.9.1所有最新开发包及源码及文档

    a) 构造方法: Field(String name, String value, Field.Store.YES, Field.Index.ANALYZED) name: 域的名称, 只能是字符串. value: 域的值, 只能是字符串. Field.Store: 指定Field的值是否存储或怎样存储. NO(不...

    lucene2.9.1完整DEMO及开发文档

    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)...

    【分享:lucene学习资料】---<下载不扣分,回帖加1分,欢迎下载,童叟无欺>

    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. 示例 ...

    LuceneNet开发实用参考样例

    6. **Query**: 查询对象,定义了用户希望查找的模式,如 TermQuery、PhraseQuery 或 BooleanQuery。 7. **ScoreDoc**: 包含每个匹配文档的评分和文档编号,用于排序和显示结果。 ### 示例代码片段 以下是一些基本...

    Lucene数据库操作实例.doc

    - 使用 `Field` 对象添加数据,例如 `Field("NAME","USERNAME",Field.Store.YES,Field.Index.UN_TOKENIZED)`,这表示“NAME”字段的值为“USERNAME”,且该字段被存储(`Store.YES`)但不进行分词处理(`Index.UN_...

    Apache Lucene3.0 入门实例介绍

    - `Field`类包含文本内容和属性,如`Field.Store.YES`表示该字段的值需要存储以便检索,`Field.Index.ANALYZED`表示该字段需要被分析并建立索引。 4. **分析器(Analyzer)**: 分析器负责将文本分解成可搜索的...

    lucene.net 2.3.1

    doc.Add(new Field("title", "Lucene.NET 全文搜索", Field.Store.YES, Field.Index.ANALYZED)); writer.AddDocument(doc); writer.Close(); // 搜索 DirectoryReader reader = DirectoryReader.Open(indexDir); ...

    lucene搜索引擎全部代码

    - 查询(Query):表示用户想要查找的信息模式,如TermQuery、BooleanQuery等。 - 结果集(Hit):搜索结果的集合,包括文档的评分和相关信息。 3. 创建搜索引擎的基本步骤: - 初始化分析器:根据需求选择或...

    Lucene3总体图_建索引_查询_数据库索引[参考].pdf

    - 支持多种查询语法,如TermQuery、BooleanQuery等,提供与SQL类似的查询能力。 5. **Search**: - Query类:各种查询类型的实现,如TermQuery、BooleanQuery等,它们负责在索引中寻找匹配的文档。 - 提供搜索...

    lucene3.5的API

    每个文档包含多个字段,如 `doc.add(new Field("title", "文档标题", Field.Store.YES, Field.Index.ANALYZED));` - **查询索引**:创建一个 Query 对象,如 `TermQuery new Term("content", "关键词")`,然后使用 ...

    AnyFo - Lucene 千斤坠.doc

    - **Field**:定义文档中的字段,如"title"和"content",`Store.YES`表示存储原始值,`Field.Index.TOKENIZED`表示字段内容会被分词并建立索引。 3. **搜索程序** - **Directory**:与索引建造相同,用于读取索引...

    Lucene 索引的简单使用

    3. **创建文档**:定义Document对象,添加Field,如`doc.add(new TextField("content", "文本内容", Store.YES))`。 4. **添加文档到索引**:使用`indexWriter.addDocument(doc)`将文档写入索引。 5. **关闭...

    使用Lucene实现一个简单的布尔搜索功能

    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....

    一个例子学懂搜索引擎(lucene)

    4. 创建`Document`,添加`Field`,如`doc.add(new TextField("content", content, Field.Store.YES));` 5. 通过`indexWriter.addDocument(doc)`将文档添加到索引。 6. 查询时,使用`QueryParser`,如`Query query = ...

    lucene-初级学习资料.ppt

    每个字段都有其存储和索引的属性,例如 `Store.YES` 表示存储字段的原始值,而 `Field.Index.TOKENIZED` 表示该字段应该被分词并建立索引。 - **索引(Index)**:索引是 Lucene 的核心,由一系列倒排索引表组成,...

    Lucene初探,一个初级的LuceneDemo

    doc.add(new TextField("content", "这是一个关于Lucene的初级示例", Field.Store.YES)); ``` 4. **索引文档**:使用`addDocument()`方法将文档添加到索引。 ```java indexWriter.addDocument(doc); ``` 5. **...

    lucene基本使用

    Lucene的核心概念包括文档(Document)、字段(Field)、索引(Index)和查询(Query)。首先,每个文档由一个或多个字段组成,字段内可以包含文本、数字或其他类型的数据。接着,Lucene通过分词器(Analyzer)对...

    本人的Lucene2.9学习笔记

    2. Query类:表示查询,例如TermQuery和BooleanQuery,它们定义了查询的逻辑结构。 总结,Lucene 2.9.1作为一个强大的全文搜索引擎,通过高效的索引结构和灵活的查询机制,为开发者提供了高效的信息检索能力。理解...

Global site tag (gtag.js) - Google Analytics