<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    szhswl
    宋針還的個(gè)人空間

            這里首先介紹一下基本的query:
    1,最普通的TermQuery
            TermQuery最普通, 用Term t=new Term("contents","cap"); new TermQuery(t)就可以構(gòu)造
            TermQuery把查詢條件視為一個(gè)key, 要求和查詢內(nèi)容完全匹配,比如Field.Keyword類型就可以使用TermQuery

    2,RangeQuery
            RangeQuery表示一個(gè)范圍的搜索條件,RangeQuery query = new RangeQuery(begin, end, included);
            最后一個(gè)boolean值表示是否包含邊界條件本身, 用字符表示為"[begin TO end]" 或者"{begin TO end}"

    3,PrefixQuery
            顧名思義,就是表示以某某開頭的查詢, 字符表示為"something*"

    4,BooleanQuery
            這個(gè)是一個(gè)組合的Query,你可以把各種Query添加進(jìn)去并標(biāo)明他們的邏輯關(guān)系,添加條件用

            public void add(Query query, boolean required, boolean prohibited)

            方法, 后兩個(gè)boolean變量是標(biāo)示AND OR NOT三種關(guān)系 字符表示為" AND OR NOT" 或 "+ -" ,一個(gè)BooleanQuery中可以添加多個(gè)Query, 如果超過setMaxClauseCount(int)的值(默認(rèn)1024個(gè))的話,會(huì)拋出TooManyClauses錯(cuò)誤.

    5,PhraseQuery
            表示不嚴(yán)格語句的查詢,比如"red pig"要匹配"red fat pig","red fat big pig"等,PhraseQuery所以提供了一個(gè)setSlop()參數(shù),在查詢中,lucene會(huì)嘗試調(diào)整單詞的距離和位置,這個(gè)參數(shù)表示可以接受調(diào)整次數(shù)限制,如果實(shí)際的內(nèi)容可以在這么多步內(nèi)調(diào)整為完全匹配,那么就被視為匹配.在默認(rèn)情況下slop的值是0, 所以默認(rèn)是不支持非嚴(yán)格匹配的, 通過設(shè)置slop參數(shù)(比如"red pig"匹配"red fat pig"就需要1個(gè)slop來把pig后移動(dòng)1位),我們可以讓lucene來模糊查詢. 值得注意的是,PhraseQuery不保證前后單詞的次序,在上面的例子中,"pig red"需要2個(gè)slop,也就是如果slop如果大于等于2,那么"pig red"也會(huì)被認(rèn)為是匹配的.

    6,WildcardQuery
            使用?和*來表示一個(gè)或多個(gè)字母比如wil*a可以匹配 wilda ,wilba ,wilxaaaa...,值得注意的是,在wildcard中,只要是匹配上的紀(jì)錄,他們的相關(guān)度都是一樣的,比如wilxaaaa和wilda的對(duì)于wil*a的相關(guān)度就是一樣的.

    7,F(xiàn)uzzyQuery
            這個(gè)Query對(duì)中文沒有什么用處,他能模糊匹配英文單詞(前面的都是詞組),比如fuzzy和wuzzy他們可以看成類似, 對(duì)于英文的各種時(shí)態(tài)變化和復(fù)數(shù)形式,這個(gè)FuzzyQuery還算有用,匹配結(jié)果的相關(guān)度是不一樣的.字符表示為 "fuzzy~"

    注意上面WildcardQuery類,在網(wǎng)上有很多資料在介紹WildcardQuery時(shí),比如:http://www.ibm.com/developerworks/cn/web/wa-lucene2/
    中就寫到:
    如果你想查詢 Teach, Teacher 和 Teaching,你就可以使用查詢語句 “Teach*”。下面代碼 顯示了通配符查詢的過程。

     1     public void testWildcardSearch(String indexDirectory)throws Exception{
     2             Directory dir = FSDirectory.getDirectory(indexDirectory,false);
     3             IndexSearcher indexSearcher = new IndexSearcher(dir);
     4             String[] searchWords = {"tex*""tex?""?ex*"};
     5             Query query;
     6             for(int i = 0; i < searchWords.length; i++){
     7                 query = new WildcardQuery(new Term("title",searchWords[i]));
     8                 Hits results = indexSearcher.search(query);
     9                 System.out.println(results.length() + "search results for query " + searchWords[i]);
    10             }
    11     }

    都給人以誤解(當(dāng)然上面代碼這樣寫是沒錯(cuò)的、可以執(zhí)行的),比如像GOOGLE一樣在查詢框中用"Teach*"時(shí)查詢會(huì)實(shí)例化WildcardQuery類,而在《Lucene IN ACTION》書中關(guān)于解析查詢表達(dá)式:QueryParser的說明中寫到了通配符和前綴查詢關(guān)系:
            如果某個(gè)項(xiàng)包含了一個(gè)星號(hào)或問號(hào),該項(xiàng)就會(huì)看作是進(jìn)行通配符查詢的一個(gè)WildcardQuery對(duì)象。而當(dāng)查詢項(xiàng)僅在項(xiàng)的末尾有一個(gè)星號(hào)時(shí),QueryParser會(huì)將它優(yōu)化為前綴查詢的 PrefixQuery對(duì)象。不管是前綴查詢,還是通配符查詢,其對(duì)象都會(huì)被默認(rèn)地轉(zhuǎn)換為小寫形式,不過該轉(zhuǎn)換行為也是可以控制的。
            如果要關(guān)閉自動(dòng)的小寫轉(zhuǎn)換功能,就一定要自己創(chuàng)建QueryParser實(shí)例,而不能只通過靜態(tài)的parse()方法。當(dāng)通配符位于查詢項(xiàng)的開頭時(shí),不能使用QueryParser進(jìn)行解析;但由API的構(gòu)造函數(shù)創(chuàng)建的Wildcard對(duì)象,則允許查詢項(xiàng)以通配符開頭(但這以損失查詢性能為代價(jià))。

    所以在這里給剛上路的新手一點(diǎn)說明。



    ---------------------------------------------------------------------------------------------------------------------------------
    說人之短,乃護(hù)己之短。夸己之長,乃忌人之長。皆由存心不厚,識(shí)量太狹耳。能去此弊,可以進(jìn)德,可以遠(yuǎn)怨。
    http://www.tkk7.com/szhswl
    ------------------------------------------------------------------------------------------------------ ----------------- ---------
    posted on 2007-12-18 11:43 宋針還 閱讀(1350) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久福利青草精品资源站免费| 日韩免费观看一区| 国产精品亚洲玖玖玖在线观看| 色吊丝免费观看网站| 国产亚洲色婷婷久久99精品91| 国产成人免费ā片在线观看老同学| 亚洲AV无码成人精品区蜜桃| 114级毛片免费观看| 亚洲激情黄色小说| 精品女同一区二区三区免费站| 亚洲午夜理论片在线观看| 四虎永久在线免费观看| 国产成人无码区免费内射一片色欲| 国产亚洲人成网站在线观看不卡| 2019中文字幕在线电影免费 | 又大又粗又爽a级毛片免费看| 九九免费观看全部免费视频| 亚洲AV电影院在线观看| 久久久高清免费视频| 污污污视频在线免费观看| 亚洲一区二区电影| 免费观看美女裸体网站| a级特黄毛片免费观看| 国产成人精品日本亚洲专一区| 亚洲?v女人的天堂在线观看| 久久永久免费人妻精品| 久久精品国产亚洲av品善| 亚洲成av人影院| 日韩免费高清一级毛片在线| a毛片成人免费全部播放| 久久久久久亚洲精品| 国产免费久久精品99re丫y| 久久亚洲精品无码av| 亚洲av无码专区国产乱码在线观看 | 国产精品美女午夜爽爽爽免费| 国产A∨免费精品视频| 亚洲中文字幕乱码一区| 国产日韩亚洲大尺度高清| 日本高清免费网站| 永久免费AV无码国产网站 | 永久中文字幕免费视频网站|