04_Lucene域

域的詳細(xì)介紹

是否分詞:

??分詞的作用是為了索引
??需要分詞: 文件名稱, 文件內(nèi)容
??不需要分詞: 不需要索引的域不需要分詞,還有就是分詞后無(wú)意義的域不需要分詞
????比如: id, 身份證號(hào)

是否索引:

??索引的的目的是為了搜索.
??需要搜索的域就一定要?jiǎng)?chuàng)建索引,只有創(chuàng)建了索引才能被搜索出來(lái)
??不需要搜索的域可以不創(chuàng)建索引
??需要索引: 文件名稱, 文件內(nèi)容, id, 身份證號(hào)等
??不需要索引: 比如圖片地址不需要?jiǎng)?chuàng)建索引, e:\xxx.jpg
????因?yàn)楦鶕?jù)圖片地址搜索無(wú)意義

是否存儲(chǔ):

??存儲(chǔ)的目的是為了顯示.
??是否存儲(chǔ)看個(gè)人需要,存儲(chǔ)就是將內(nèi)容放入Document文檔對(duì)象中保存出來(lái),會(huì)額外占用磁盤(pán)空間, 如果搜索的時(shí)候需要馬上顯示出來(lái)可以放入document中也就是要存儲(chǔ),這樣查詢顯示速度快, 如果不是馬上立刻需要顯示出來(lái),則不需要存儲(chǔ),因?yàn)轭~外占用磁盤(pán)空間不劃算.

域的各種類型

Field類 數(shù)據(jù)類型 Analyzed是否分析 Indexed是否索引 Stored是否存儲(chǔ) 說(shuō)明
StringField(FieldName, FieldValue,Store.YES)) 字符串 N Y Y或N 這個(gè)Field用來(lái)構(gòu)建一個(gè)字符串Field买鸽,但是不會(huì)進(jìn)行分析,會(huì)將整個(gè)串存儲(chǔ)在索引中,比如(訂單號(hào),姓名等)是否存儲(chǔ)在文檔中用Store.YES或Store.NO決定
LongField(FieldName, FieldValue,Store.YES) Long型 Y Y Y或N 這個(gè)Field用來(lái)構(gòu)建一Long數(shù)字型Field照瘾,進(jìn)行分析和索引耕魄,比如(價(jià)格)是否存儲(chǔ)在文檔中用Store.YES或Store.NO決定
StoredField(FieldName, FieldValue) 重載方法桌粉,支持多種類型 N N Y 這個(gè)Field用來(lái)構(gòu)建不同類型Field 不分析宣脉,不索引喷市,但要Field存儲(chǔ)在文檔中
TextField(FieldName, FieldValue, Store.NO)或TextField(FieldName, reader) 字符串或流 Y Y Y或N 如果是一個(gè)Reader, lucene猜測(cè)內(nèi)容比較多,會(huì)采用Unstored的策略.

注意:lucene底層的算法,錢(qián)數(shù)是要分詞的,因?yàn)橐鶕?jù)價(jià)錢(qián)進(jìn)行對(duì)比
例如: 大于12.5元的小于100元的商品搜索出來(lái)

  • 將前面建立索引的代碼重新修改
package cn.huahcao.lucene;

import org.apache.commons.io.FileUtils;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.LongField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.junit.Test;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class IndexManagerTest {
    @Test
    public void testCreateIndex() throws Exception{
        //采集文件系統(tǒng)中的文檔數(shù)據(jù),放入lucene中
        //文檔列表酗宋,保存Document
        List<Document> docList = new ArrayList<Document>();

        //指定文件所在的目錄
        File dir = new File("G:\\Java\\JavaEE\\09_SSM\\lucene_day01\\參考資料\\searchsource");

        //循環(huán)取出文件
        for (File file:dir.listFiles()){
            //文件名稱
            String fileName = file.getName();
            //文件內(nèi)容
            String fileContext = FileUtils.readFileToString(file);
            //文件大小
            Long fileSize = FileUtils.sizeOf(file);
            //文檔對(duì)象积仗。文件系統(tǒng)中的一個(gè)文件就是一個(gè)Document對(duì)象
            Document doc = new Document();
            /**
             * 第一個(gè)參數(shù):域名
             * 第二個(gè)參數(shù):域值
             * 第三個(gè)參數(shù):是否存儲(chǔ),是為Yes,不存儲(chǔ)為No
             */
//            TextField nameFiled = new TextField("fileName",fileName, Field.Store.YES);
//            TextField contextFiled = new TextField("fileContent",fileContent, Field.Store.YES);
//            TextField sizeFiled = new TextField("fileSize",fileSize.toString(), Field.Store.YES);

            //是否分詞:要,因?yàn)樗饕?并且它不是一個(gè)整體,分詞有意義
            //是否索引:要,因?yàn)橐ㄟ^(guò)它來(lái)進(jìn)行搜索
            //是否存儲(chǔ):要,因?yàn)橐苯釉陧?yè)面上顯示
            TextField nameFiled = new TextField("fileName", fileName, Field.Store.YES);

            //是否分詞: 要,因?yàn)橐鶕?jù)內(nèi)容進(jìn)行搜索,并且它分詞有意義
            //是否索引: 要,因?yàn)橐鶕?jù)它進(jìn)行搜索
            //是否存儲(chǔ): 可以要也可以不要,不存儲(chǔ)搜索完內(nèi)容就提取不出來(lái)
            TextField contextFiled = new TextField("fileContext", fileContext, Field.Store.NO);

            //是否分詞: 要, 因?yàn)閿?shù)字要對(duì)比,搜索文檔的時(shí)候可以搜大小, lunene內(nèi)部對(duì)數(shù)字進(jìn)行了分詞算法
            //是否索引: 要, 因?yàn)橐鶕?jù)大小進(jìn)行搜索
            //是否存儲(chǔ): 要, 因?yàn)橐@示文檔大小
            LongField sizeFiled = new LongField("fileSize", fileSize, Field.Store.YES);

            //將所有的域存入文檔中
            doc.add(nameFiled);
            doc.add(contextFiled);
            doc.add(sizeFiled);

            //將文檔存入文檔集合中
            docList.add(doc);
        }

        //創(chuàng)建分詞器,StandardAnalyzer標(biāo)準(zhǔn)分詞器,標(biāo)準(zhǔn)分詞器對(duì)英文分詞效果很好,對(duì)中文是單字分詞
        StandardAnalyzer analyzer = new StandardAnalyzer();
        //指定索引和文檔存儲(chǔ)的目錄
        FSDirectory directory = FSDirectory.open(new File("G:\\Java\\JavaEE\\09_SSM\\lucene_day01\\tmp"));
        //創(chuàng)建寫(xiě)對(duì)象的初始化對(duì)象
        IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_4_10_3,analyzer);
        //創(chuàng)建索引和文檔寫(xiě)對(duì)象
        IndexWriter indexWriter = new IndexWriter(directory , config);

        //將文檔加入到索引和文檔的寫(xiě)對(duì)象中
        for (Document doc:docList){
            indexWriter.addDocument(doc);
        }
        //提交
        indexWriter.commit();
        //關(guān)閉流
        indexWriter.close();
    }

}

運(yùn)行上面代碼重新建立索引

  • 使用luke查看如下:


  • 查看Document


    因?yàn)槲覀儧](méi)有存儲(chǔ)文件內(nèi)容蜕猫,所以fileContext是空的

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末寂曹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌隆圆,老刑警劉巖漱挚,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異匾灶,居然都是意外死亡棱烂,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)阶女,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)颊糜,“玉大人,你說(shuō)我怎么就攤上這事秃踩〕挠悖” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵憔杨,是天一觀的道長(zhǎng)鸟赫。 經(jīng)常有香客問(wèn)我,道長(zhǎng)消别,這世上最難降的妖魔是什么抛蚤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮寻狂,結(jié)果婚禮上岁经,老公的妹妹穿的比我還像新娘。我一直安慰自己蛇券,他們只是感情好缀壤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著纠亚,像睡著了一般塘慕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蒂胞,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天图呢,我揣著相機(jī)與錄音,去河邊找鬼啤誊。 笑死岳瞭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚊锹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼稚瘾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼牡昆!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤丢烘,失蹤者是張志新(化名)和其女友劉穎柱宦,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體播瞳,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掸刊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赢乓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忧侧。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖牌芋,靈堂內(nèi)的尸體忽然破棺而出蚓炬,到底是詐尸還是另有隱情,我是刑警寧澤躺屁,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布肯夏,位于F島的核電站,受9級(jí)特大地震影響犀暑,放射性物質(zhì)發(fā)生泄漏驯击。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一耐亏、第九天 我趴在偏房一處隱蔽的房頂上張望徊都。 院中可真熱鬧,春花似錦苹熏、人聲如沸碟贾。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)袱耽。三九已至,卻和暖如春干发,著一層夾襖步出監(jiān)牢的瞬間朱巨,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工枉长, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留冀续,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓必峰,卻偏偏與公主長(zhǎng)得像洪唐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吼蚁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Solr&ElasticSearch原理及應(yīng)用 一凭需、綜述 搜索 http://baike.baidu.com/it...
    樓外樓V閱讀 7,291評(píng)論 1 17
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器粒蜈,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • MySQL技術(shù)內(nèi)幕:InnoDB存儲(chǔ)引擎(第2版) 姜承堯 第1章 MySQL體系結(jié)構(gòu)和存儲(chǔ)引擎 >> 在上述例子...
    沉默劍士閱讀 7,417評(píng)論 0 16
  • 愛(ài)情分泌的荷爾蒙通常有效期是兩年。在戀愛(ài)初期還會(huì)分泌出羥色胺度硝,它會(huì)讓?xiě)賽?ài)的兩人失去理智肿轨,看不清對(duì)方的缺點(diǎn)。所以戀愛(ài)...
    九歌_閱讀 5,181評(píng)論 95 151
  • 見(jiàn)過(guò)可以自己換燈泡塘淑、獨(dú)自上醫(yī)院的女孩萝招;也見(jiàn)過(guò)連吃個(gè)桃子也非得讓人去皮才愿意張嘴的女孩;靜觀我們這群坐在亭子里瞎掰的...
    蘇小錢(qián)閱讀 198評(píng)論 0 0