Lucene的查询语法

1,一个短句可以用双音号括起来,这样只有文中含有该句的时间才会被搜索出来.比如:
    "hip hop"
将会只出现包含hip hop(不区分大小写)的短句
2,一个字段名后面跟冒号,再加上要搜索的词语或短句,就可以直接搜索该字段.比如:
要搜索在 1981年10月20日出生的会员可以这样:
    age:19811020
如果是短句,则是:
   age:"1981 10 20"
后面还可以跟关键字:
    age:19811020 美女
3,可以用?或*实现模糊搜索,搜索 te*t 的结果会出 tet,test,text.也会出现teast,而搜索 te?t,只会有tet,test,text.其中的?表示0或1个字符,*表示0或多个字符.
4,用roam~可以实现拼写模糊搜索,比如foam和roams都将会被匹配出来.在1.9版本以后,还会有一个参数,可以指定要匹配的相似度.
5,"~"还可以用于指定关键字之间的距离,比如
    "jakarta apache"~10
只匹配文中含jakarta和apache两个关键字,且两者中间有10以下的词语的文档.
6,":"还可以用来提定一个范围,比如:
      age:[20051010 TO 20051229]
就只匹配在2005年10月10日和2005年12月29日之间出生的会员.
对于非数字组合的字符串可以
      title:{Aida TO Carmen}
搜索在Aida和Carmen之间的词语,但是不包含Aida和Carmen这两个词.
7,可以用"^"实现着重号的功能,比如你想在搜索 "jakarta apache"时让jakarta更相关的排在前面,就可以用:
      jakarta^4 apache
对于一个短句也是如此:
 "jakarta apache"^4 "Apache Lucene"
8,"OR"操作符用来表示或,为了搜索含有 "jakarta apache" 或只有 "jakarta"的文档,可以这样:
     "jakarta apache" OR jakarta
9,"AND"操作符用来表示与,为了搜索同时含有 "jakarta apache" 和 "Apache Lucene"的文档,可以用这样的搜索语句:
     "jakarta apache" AND "Apache Lucene"
10,为了让某个关键字必须出现,其它关键字则可以忽略,可以用"+":
    +jakarta apache
  这样搜索出的文档一定会出现jakarta,而不一定有apache.
11,"NOT"可以用来排除某个关键字,比如你想搜索含有"jakarta apache",但是没有 "Apache Lucene" 的文档,就可以用:
    "jakarta apache" NOT  "Apache Lucene"
但是NOT不能出于在一个单一的条件里面,比如
    NOT "Apache Lucene"
并不会如我们想象的那样搜索出不含有"Apache Lucene"的文档.
12,"-"号等同于NOT,只是要紧挨着关键字或短语:
     "jakarta apache" -"Apache Lucene"

参考:
http://lucene.apache.org/java/docs/queryparsersyntax.html

你可能感兴趣的:(apache,Lucene)