<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)航:
     
    主站蜘蛛池模板: 久久国产精品免费| 日韩在线视频播放免费视频完整版| 自拍日韩亚洲一区在线| 亚洲av无码片vr一区二区三区| 激情吃奶吻胸免费视频xxxx| 国产一级婬片A视频免费观看| 久久国产精品免费视频| 成人午夜大片免费7777| 免费很黄很色裸乳在线观看| 亚洲成色www久久网站夜月| 亚洲制服在线观看| 黄色免费网址大全| 日韩精品无码免费一区二区三区 | 国产精品亚洲精品| 阿v视频免费在线观看| a毛片免费全部在线播放**| 99久久久精品免费观看国产| 国产中文字幕免费| 亚洲AV无码一区二区乱孑伦AS| 亚洲一区二区影视| 国产免费牲交视频免费播放| www.999精品视频观看免费| 亚洲国产成人VA在线观看| 久久综合亚洲色HEZYO社区| 亚洲AV综合色区无码一二三区| 全黄大全大色全免费大片| 免费无码又黄又爽又刺激| 亚洲午夜福利精品无码| 亚洲国产人成在线观看| 一级毛片免费视频网站| 成人免费黄色网址| 中文字幕第一页亚洲| 亚洲激情视频图片| 二个人看的www免费视频| 啦啦啦中文在线观看电视剧免费版 | 亚洲人成人网站色www | 亚洲毛片基地日韩毛片基地| 免费人成又黄又爽的视频在线电影| 69视频在线观看免费| 亚洲不卡AV影片在线播放| 亚洲一区二区三区免费观看|