<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


    <2008年12月>
    30123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    留言簿(4)

    我參與的團隊

    文章分類(50)

    文章檔案(48)

    相冊

    朋友

    搜索

    •  

    積分與排名

    • 積分 - 96432
    • 排名 - 600

    最新評論

    主站蜘蛛池模板: 三年在线观看免费观看完整版中文| 亚洲AV成人一区二区三区在线看| 春暖花开亚洲性无区一区二区| 无码少妇一区二区浪潮免费| 亚洲国产视频网站| 1000部免费啪啪十八未年禁止观看| 国产亚洲人成网站观看| 十八禁在线观看视频播放免费| 国产亚洲精品高清在线| 中文字幕免费观看视频| 国产成人亚洲综合无码精品| 久久精品国产免费一区| 亚洲国产成人片在线观看| 午夜免费福利小电影| 亚洲色偷偷偷网站色偷一区| 国产亚洲视频在线播放| 亚洲a无码综合a国产av中文| www.亚洲色图.com| 91国内免费在线视频| 亚洲一区二区电影| 岛国大片免费在线观看| 最新亚洲人成无码网站| 中文字幕无码精品亚洲资源网| 国产婷婷成人久久Av免费高清| 97亚洲熟妇自偷自拍另类图片| 毛片a级毛片免费观看免下载| 亚洲av第一网站久章草| 精品亚洲成α人无码成α在线观看 | 无码欧精品亚洲日韩一区夜夜嗨| fc2成年免费共享视频18| 久久久久久久亚洲Av无码| 久久久久久99av无码免费网站| 猫咪免费观看人成网站在线| 久久久久亚洲AV无码专区首| 五月婷婷亚洲综合| 久久亚洲精品无码gv| 国产亚洲精品a在线观看| 国产h肉在线视频免费观看| 亚洲av无码日韩av无码网站冲 | 免费一级毛suv好看的国产网站| 国产亚洲福利精品一区|