Lucene查询语句

项(Term)

一条搜索语句被拆分为一些项(term)和操作符(operator)。项有两种类型:单独项和短语。

单独项就是一个单独的单词,例如”hello” , “lucene”。

短语是一组被双引号包围的单词,例如”hello lucene”。

多个项可以用布尔操作符连接起来形成复杂的查询语句(接下来您就会看到)。
域(Field)
Lucene支持域。您可以指定在某一个域中搜索,或者就使用默认域。域名及默认域是具体索引器实现决定的。

您可以这样搜索域:域名+”:”+搜索的项名。
例如 name:张三 name是一个域

title:"The Right Way" AND text:go 

等于下面这句 (text是默认域,可以不写)

title:"Do it right" AND right

注意:域名只对紧接于其后的项生效,所以
title:Do it right 只有”Do”属于title域。”it”和”right”仍将在默认域中搜索(这里是text域)。

项修饰符(Term Modifiers)

使用符号”?”表示单个任意字符的通配。
使用符号”*”表示多个任意字符的通配。
注意:您不能在搜索的项开始使用*或者?符号。

模糊查询
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可以设置在搜索时匹配项的相似度。在项的最后加上符号”^”紧接一个数字(增量值),表示搜索时的相似度。增量值越高,搜索到的项相关度越好。

布尔操作符
AND OR NOT

转义特殊字符(Escaping Special Characters)

Lucene支持转义特殊字符,因为特殊字符是查询语法用到的。现在,特殊字符包括

    • && || ! ( ) { } [ ] ^ ” ~ * ? : /

转义特殊字符只需在字符前加上符号/,例如搜索(1+1):2,使用查询

/(1/+1/)/:2

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值