lucene中TOKENIZED,UN_TOKENIZED 解釋

Field("content",curArt.getContent(),Field.Store.NO,Field.Index.TOKENIZED)); 這些地方與舊版本有很大的區別。
Field有兩個屬性可選:存儲和索引。通過存儲屬性你可以控制是否對這個Field進行存儲;通過索引屬性你可以控制是否對該Field進行索引。這看起來似乎有些廢話,事實上對這兩個屬性的正確組合很重要。
Field.Index             Field.Store       說明 
TOKENIZED(分詞)   YES                   被分詞索引且存儲 
TOKENIZED             NO                   被分詞索引但不存儲 
NO                         YES                   這是不能被搜索的,它只是被搜索內容的附屬物。如URL等 
UN_TOKENIZED     YES/NO             不被分詞,它作為一個整體被搜索,搜一部分是搜不出來的 
NO                         NO                   沒有這種用法
如果要對某Field進行查找,那麼一定要把Field.Index設置為TOKENIZED或UN_TOKENIZED。TOKENIZED會對Field的內容進行分詞;而UN_TOKENIZED不會,只有全詞匹配,該Field才會被選中。

如果Field.Store是No,那麼就無法在搜索結果中從索引數據直接提取該域的值,會使null。

2.4版本的補充

我們那文章表為例.articleinfo.有ID,title(標題),sumary(摘要),content(內容),userName(用戶名)
其中title(標題),sumary(摘要)屬於第一種情況,既要索引也要分詞,也要存儲.
content(內容)要分詞,索引,但不存儲.由於他太大了,而且界面也不用顯示整個內容.
ID要存儲,不用索引.因為沒人用他來查詢.但拼URL卻很需要他.索引要存儲.
userName(用戶名)索引,但不分詞.可用保存.為什麼不分詞?比如"成吉思汗",我不想被"成漢"搜索到.我希望要麼"成吉思汗"或者"*吉思*"通配符搜到.
總結如下:
1.如果要對某Field進行查找,那麼一定要把Field.Index設置為TOKENIZED或UN_TOKENIZED。TOKENIZED會對Field的內容進行分詞;而UN_TOKENIZED不會,只有全詞匹配,該Field才會被選中。
2.如果Field.Store是No,那麼就無法在搜索結果中從索引數據直接提取該域的值,會使null。
補充:
       Field.Store.YES:存儲字段值(未分詞前的字段值)
       Field.Store.NO:不存儲,存儲與索引沒有關係
       Field.Store.COMPRESS:壓縮存儲,用於長文本或二進制,但性能受損

Field.Index.ANALYZED:分詞建索引
       Field.Index.ANALYZED_NO_NORMS:分詞建索引,但是Field的值不像通常那樣被保存,而是只取一個byte,這樣節約存儲空間
       Field.Index.NOT_ANALYZED:不分詞且索引
       Field.Index.NOT_ANALYZED_NO_NORMS:不分詞建索引,Field的值去一個byte保存

TermVector表示文檔的條目(由一個Document和Field定位)和它們在當前文檔中所出現的次數
       Field.TermVector.YES:為每個文檔(Document)存儲該字段的TermVector
       Field.TermVector.NO:不存儲TermVector
       Field.TermVector.WITH_POSITIONS:存儲位置
       Field.TermVector.WITH_OFFSETS:存儲偏移量
       Field.TermVector.WITH_POSITIONS_OFFSETS:存儲位置和偏移量

原文地址:https://www.cnblogs.com/cuihongyu3503319/p/9448093.html

时间: 2024-10-17 16:12:41

lucene中TOKENIZED,UN_TOKENIZED 解釋的相关文章

【转载】lucene中Field.Index,Field.Store详解

lucene在doc.add(new Field("content",curArt.getContent(),Field.Store.NO,Field.Index.TOKENIZED)); Field有两个属性可选:存储和索引. 通过存储属性你可以控制是否对这个Field进行存储: 通过索引属性你可以控制是否对该Field进行索引. 事实上对这两个属性的正确组合很重要. Field.Index Field.Store 说明 TOKENIZED(分词) YES 被分词索引且存储 TOKE

Lucene 中自定义排序的实现

使用Lucene来搜索内容,搜索结果的显示顺序当然是比较重要的.Lucene中Build-in的几个排序定义在大多数情况下是不适合我们使用的.要适合自己的应用程序的场景,就只能自定义排序功能,本节我们就来看看在Lucene中如何实现自定义排序功能. Lucene中的自定义排序功能和Java集合中的自定义排序的实现方法差不多,都要实现一下比较接口. 在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和 ScoreDocCom

lucene 中关于Store.YES 关于Store.NO的解释

总算搞明白 lucene 中关于Store.YES  关于Store.NO的解释了 一直对Lucene Store.YES不太理解,网上多数的说法是存储字段,NO为不存储. 这样的解释有点郁闷:字面意思一看就明白,但是不解. 之前我的理解是:如果字段可以不存储,那要怎么搜索这个不存储的字段呢? 原来Lucene就是这样,可以设置某些字段为不存储,但是可以用来检索. 终于在一篇文章里看到这几句话,突然间就明白了. //Store.YES 保存 可以查询 可以打印内容 Field storeYes

转载:PCB名詞解釋:通孔、盲孔、埋孔

在[電子製造業]打滾多年,分享 SMT.焊錫.塑膠射出.產品設計.瓦楞包裝…等經驗.請注意文章內容不見得都正確,服用前請三思… 之前有網友提醒我有篇文章把PCB的盲孔(Blind hole).埋孔(Buried hole)弄錯了,圍了避免類似的問題出現,所以我特地找了一些關於PCB的書籍,研究了一番,把這些PCB上面的一些導孔(Vias)給弄清楚. 我們都知道,電路板是由一層層的銅箔電路疊加而成的,而不同電路層之間的連通靠的就是導孔(via),這是因為現今電路板的製造使用鑽孔來連通於不同的電路層

PCB名詞解釋:通孔、盲孔、埋孔(转载)

文章转载自:https://www.researchmfg.com/2011/07/pth-blind-hole-buried-hole/ PCB名詞解釋:通孔.盲孔.埋孔 Posted by 工作熊 七月 7, 2011 之前有網友提醒工作熊說有篇文章把PCB的盲孔(Blind hole)及埋孔(Buried hole)給弄顛倒了,為了避免類似問題出現,所以工作熊特地去找了一些關於PCB的書籍來研究了一番,把PCB上面的這些導孔(Vias)給弄清楚. 我們都知道,電路板是由一層層的銅箔電路疊加

【Java】Lucene检索引擎详解

基于Java的全文索引/检索引擎——Lucene Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能. Lucene的作者:Lucene的贡献者Doug Cutting是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究.他贡献出的Lucene的目标是为各

lucene源代码学习之LZ4压缩算法在lucene中应用

LZ4算法又称为Realtime Compression Algorithm,在操作系统(linux/freeBSD).文件系统(OpenZFS).大数据(Hadoop).搜索引擎(Lucene/solr).数据库(Hbase)--都可以看到它的身影,可以说是一个非常通用的算法.LZ4最突出的地方在于它的压缩/解压速度. 基础知识 理解Lucene中LZ4算法的实现,需要有以下两点基础知识: 1. 理解Lucene里面的packedInts. 关于PacedInts,可以参考http://sbp

[Elasticsearch] 控制相关度 (二) - Lucene中的PSF(Practical Scoring Function)与查询期间提升

本章翻译自Elasticsearch官方指南的Controlling Relevance一章. Lucene中的Practical Scoring Function 对于多词条查询(Multiterm Queries),Lucene使用的是布尔模型(Boolean Model),TF/IDF以及向量空间模型(Vector Space Model)来将它们结合在一起,用来收集匹配的文档和对它们进行分值计算. 像下面这样的多词条查询: GET /my_index/doc/_search { "que

Lucene中的 Query对象

"Lucene中的 Query对象": 检 索前,需要对检索字符串进行分析,这是由queryparser来完成的.为了保证查询的正确性,最好用创建索引文件时同样的分析器. queryparser解析字符串时,可以指定查询域,实际可以在字符串中指定一个或多个域.例如:“info:电视台 and id:3329”,“info:电视台”,“电视台”,假如不指定默认域,就会在默认域查询. queryparser调用静态方法parse后会返回query的实例,原子查询.例如:“info:电视台