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

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

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

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

    緒論

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

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

    項(Term

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

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

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

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

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

    域(Field

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

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

    舉個例子,假設某一個Lucene索引包含兩個域,title和text,text是默認域。如果您想查找標題為"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的搜索結果.

    鄰近搜索(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可以設置在搜索時匹配項的相似度。在項的最后加上符號"^"緊接一個數字(增量值),表示搜索時的相似度。增量值越高,搜索到的項相關度越好。

    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:

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

    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相關度高。您也可以增量短語,象以下這個例子一樣:

    "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操作符匹配的是兩項同時出現的文檔。這個與集合交操作相等。符號&&可以代替符號AND。

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

    "jakarta apache" AND "jakarta lucene"

    +

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

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

    +jakarta apache

    NOT

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

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

    "jakarta apache" NOT "jakarta lucene"

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

    NOT "jakarta apache"

    -

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

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

    "jakarta apache" -"jakarta lucene"

    分組(Grouping

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

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

    (jakartaOR apache) AND website

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

    轉義特殊字符(Escaping Special Characters

    Lucene支持轉義特殊字符,因為特殊字符是查詢語法用到的?,F在,特殊字符包括

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

    轉義特殊字符只需在字符前加上符號",例如搜索(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
    很好,學習了。  回復  更多評論
      
    本博客主為學習和復習之用,無關其他,想罵人的繞道
    Email:dkm123456@126.com
    大家一起交流進步
    QQ:283582761


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

    留言簿(4)

    我參與的團隊

    文章分類(50)

    文章檔案(48)

    相冊

    朋友

    搜索

    •  

    積分與排名

    • 積分 - 96432
    • 排名 - 600

    最新評論

    主站蜘蛛池模板: 亚洲色大情网站www| 亚洲国产成人综合| 国产成人精品免费大全| 国产伦精品一区二区三区免费下载| 日本高清免费观看| 亚洲人成网亚洲欧洲无码久久| 亚洲午夜久久久久久噜噜噜| 一区二区三区在线免费观看视频| 国产婷婷成人久久Av免费高清| 永久免费毛片在线播放| 亚洲人成网网址在线看| 久久精品无码一区二区三区免费| 亚洲精品动漫人成3d在线| 人碰人碰人成人免费视频| 亚洲真人日本在线| 国产一区二区三区免费| 久久亚洲私人国产精品| 成人性生交大片免费看无遮挡 | 人体大胆做受免费视频| 亚洲天堂免费在线视频| 嫩草成人永久免费观看| 亚洲国产美女视频| 免费看a级黄色片| 国产成人无码精品久久久久免费| 99久久综合国产精品免费| 国产亚洲精品美女久久久久 | 免费91最新地址永久入口| 亚洲精品在线网站| 国产精品免费视频网站| 一个人看的免费观看日本视频www| 免费看美女裸露无档网站| 春暖花开亚洲性无区一区二区| 亚洲免费在线视频观看| 国产精品亚洲一区二区在线观看| 最好看最新的中文字幕免费| 亚洲依依成人亚洲社区| 中文字幕在线亚洲精品| 无码国产精品一区二区免费式影视 | yellow视频免费看| 久久久久亚洲Av片无码v| 青春禁区视频在线观看直播免费|