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

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

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

    laoding
    本來我以為,隱身了別人就找不到我,沒有用的,像我這樣拉風(fēng)的男人,無論走到哪里,都像在黑暗中的螢火蟲一樣,那樣的鮮明,那樣的出眾。我那憂郁的眼神,稀疏的胡茬,那微微隆起的將軍肚和親切的笑容......都深深吸引了眾人......
    posts - 0,  comments - 37,  trackbacks - 0
    原文來自:http://liyu2000.nease.net/article/Lucene/queryparsersyntax.htm

    緒論

    Lucene提供了方便您創(chuàng)建自建查詢的API,也通過QueryParser提供了強大的查詢語言。

    本文講述Lucene的查詢語句解析器支持的語法,Lucene的查詢語句解析器是使用JavaCC工具生成的詞法解析器,它將查詢字串解析為Lucene Query對象。

    項(Term

    一條搜索語句被拆分為一些項(term)和操作符(operator)。項有兩種類型:單獨項和短語。

    單獨項就是一個單獨的單詞,例如"test" , "hello"。

    短語是一組被雙引號包圍的單詞,例如"hello dolly"。

    多個項可以用布爾操作符連接起來形成復(fù)雜的查詢語句(接下來您就會看到)。

    注意:Analyzer建立索引時使用的解析器和解析單獨項和短語時的解析器相同,因此選擇一個不會受查詢語句干擾的Analyzer非常重要。

    域(Field

    Lucene支持域。您可以指定在某一個域中搜索,或者就使用默認域。域名及默認域是具體索引器實現(xiàn)決定的。

    您可以這樣搜索域:域名+":"+搜索的項名。

    舉個例子,假設(shè)某一個Lucene索引包含兩個域,title和text,text是默認域。如果您想查找標(biāo)題為"The Right Way"且含有"don't go this way"的文章,您可以輸入:

    title:"The Right Way" AND text:go

    或者

    title:"Do it right" AND right

    因為text是默認域,所以這個域名可以不行。

    注意:域名只對緊接于其后的項生效,所以

    title:Do it right

    只有"Do"屬于title域。"it"和"right"仍將在默認域中搜索(這里是text域)。

    項修飾符(Term Modifiers

    Lucene支持項修飾符以支持更寬范圍的搜索選項。

    用通配符搜索

    Lucene支持單個與多個字符的通配搜索。

    使用符號"?"表示單個任意字符的通配。

    使用符號"*"表示多個任意字符的通配。

    單個任意字符匹配的是所有可能單個字符。例如,搜索"text或者"test",可以這樣:

    te?t

    多個任意字符匹配的是0個及更多個可能字符。例如,搜索test, tests 或者 tester,可以這樣:

    test*

    您也可以在字符竄中間使用多個任意字符通配符。

    te*t

    注意:您不能在搜索的項開始使用*或者?符號。

    模糊查詢

    Lucene支持基于Levenshtein Distance與Edit Distance算法的模糊搜索。要使用模糊搜索只需要在單獨項的最后加上符號"~"。例如搜索拼寫類似于"roam"的項這樣寫:

    roam~

    這次搜索將找到形如foam和roams的單詞。

    注意:使用模糊查詢將自動得到增量因子(boost factor)為0.2的搜索結(jié)果.

    鄰近搜索(Proximity Searches)

    Lucene還支持查找相隔一定距離的單詞。鄰近搜索是在短語最后加上符號"~"。例如在文檔中搜索相隔10個單詞的"apache"和"jakarta",這樣寫:

    "jakarta apache"~10

    Boosting a Term

    Lucene provides the relevance level of matching documents based on the terms found. To boost a term use the caret, "^", symbol with a boost factor (a number) at the end of the term you are searching. The higher the boost factor, the more relevant the term will be.

    Lucene可以設(shè)置在搜索時匹配項的相似度。在項的最后加上符號"^"緊接一個數(shù)字(增量值),表示搜索時的相似度。增量值越高,搜索到的項相關(guān)度越好。

    Boosting allows you to control the relevance of a document by boosting its term. For example, if you are searching for jakarta apache and you want the term "jakarta" to be more relevant boost it using the ^ symbol along with the boost factor next to the term. You would type:

    通過增量一個項可以控制搜索文檔時的相關(guān)度。例如如果您要搜索jakarta apache,同時您想讓"jakarta"的相關(guān)度更加好,那么在其后加上"^"符號和增量值,也就是您輸入:

    jakarta^4 apache

    This will make documents with the term jakarta appear more relevant. You can also boost Phrase Terms as in the example:

    這將使得生成的doucment盡可能與jakarta相關(guān)度高。您也可以增量短語,象以下這個例子一樣:

    "jakarta apache"^4 "jakarta lucene"

    By default, the boost factor is 1. Although, the boost factor must be positive, it can be less than 1 (i.e. .2)

    默認情況下,增量值是1。增量值也可以小于1(例如0.2),但必須是有效的。

    布爾操作符

    布爾操作符可將項通過邏輯操作連接起來。Lucene支持AND, "+", OR, NOT 和 "-"這些操作符。(注意:布爾操作符必須全部大寫)

    OR

    OR操作符是默認的連接操作符。這意味著如果兩個項之間沒有布爾操作符,就是使用OR操作符。OR操作符連接兩個項,意味著查找含有任意項的文檔。這與集合并運算相同。符號||可以代替符號OR。

    搜索含有"jakarta apache" 或者 "jakarta"的文檔,可以使用這樣的查詢:

    "jakarta apache" jakarta

    或者

    "jakarta apache" OR jakarta

    AND

    AND操作符匹配的是兩項同時出現(xiàn)的文檔。這個與集合交操作相等。符號&&可以代替符號AND。

    搜索同時含有"jakarta apache" 與 "jakarta lucene"的文檔,使用查詢:

    "jakarta apache" AND "jakarta lucene"

    +

    "+"操作符或者稱為存在操作符,要求符號"+"后的項必須在文檔相應(yīng)的域中存在。

    搜索必須含有"jakarta",可能含有"lucene"的文檔,使用查詢:

    +jakarta apache

    NOT

    NOT操作符排除那些含有NOT符號后面項的文檔。這和集合的差運算相同。符號!可以代替符號NOT。

    搜索含有"jakarta apache",但是不含有"jakarta lucene"的文檔,使用查詢:

    "jakarta apache" NOT "jakarta lucene"

    注意:NOT操作符不能單獨與項使用構(gòu)成查詢。例如,以下的查詢查不到任何結(jié)果:

    NOT "jakarta apache"

    -

    "-"操作符或者禁止操作符排除含有"-"后面的相似項的文檔。

    搜索含有"jakarta apache",但不是"jakarta lucene",使用查詢:

    "jakarta apache" -"jakarta lucene"

    分組(Grouping

    Lucene支持使用圓括號來組合字句形成子查詢。這對于想控制查詢布爾邏輯的人十分有用。

    搜索含有"jakarta"或者"apache",同時含有"website"的文檔,使用查詢:

    (jakartaOR apache) AND website

    這樣就消除了歧義,保證website必須存在,jakarta和apache中之一也存在。

    轉(zhuǎn)義特殊字符(Escaping Special Characters

    Lucene支持轉(zhuǎn)義特殊字符,因為特殊字符是查詢語法用到的。現(xiàn)在,特殊字符包括

    + - && || ! ( ) { } [ ] ^ " ~ * ? : "

    轉(zhuǎn)義特殊字符只需在字符前加上符號",例如搜索(1+1):2,使用查詢

    "(1"+1")":2

    posted on 2008-10-31 18:07 老丁 閱讀(2034) 評論(1)  編輯  收藏 所屬分類: 搜索引擎 lucene

    FeedBack:
    # re: Lucene的查詢語法!(搜索引擎)
    2008-12-17 14:21 | soloman
    很好,學(xué)習(xí)了。  回復(fù)  更多評論
      
    本博客主為學(xué)習(xí)和復(fù)習(xí)之用,無關(guān)其他,想罵人的繞道
    Email:dkm123456@126.com
    大家一起交流進步
    QQ:283582761


    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    留言簿(4)

    我參與的團隊

    文章分類(50)

    文章檔案(48)

    相冊

    朋友

    搜索

    •  

    積分與排名

    • 積分 - 96446
    • 排名 - 600

    最新評論

    主站蜘蛛池模板: 免费观看四虎精品国产永久| 免费精品国产自产拍在线观看图片| 国产免费观看网站| 亚洲熟伦熟女专区hd高清| 999久久久免费精品国产| 亚洲精品私拍国产福利在线| 国产精成人品日日拍夜夜免费 | 最近2019中文字幕免费大全5| 久久噜噜噜久久亚洲va久| 在线观看片免费人成视频无码| 亚洲日本一区二区三区在线| 男人的天堂网免费网站| 久久精品国产亚洲精品2020| 久久国产免费福利永久| 亚洲中文字幕久久精品无码A| 暖暖免费高清日本中文| 美女的胸又黄又www网站免费| 国产福利电影一区二区三区,亚洲国模精品一区| 亚洲av成本人无码网站| 亚洲国产专区一区| 久久黄色免费网站| 亚洲中文无码永久免| 又色又污又黄无遮挡的免费视| 一级成人a免费视频| 无码乱人伦一区二区亚洲一| 久久久久久曰本AV免费免费| 亚洲国产成a人v在线观看| 国产区卡一卡二卡三乱码免费| 一本大道一卡二大卡三卡免费| 久久久无码精品亚洲日韩按摩 | 成人免费毛片内射美女-百度| 亚洲精品日韩一区二区小说| 国产亚洲一区区二区在线| 久别的草原电视剧免费观看| 亚洲无吗在线视频| 久久国产成人精品国产成人亚洲 | 猫咪免费人成网站在线观看入口| 亚洲色成人WWW永久网站| 免费AA片少妇人AA片直播| 免费夜色污私人影院网站电影| 亚洲卡一卡2卡三卡4卡无卡三|