- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Lucene详细说明和操作使用
Lucene详细说明和操作使用
Lucene提供了方便您创建自建查询的API,也通过QueryParser提供了强大的查询语言。
本文讲述Lucene的查询语句解析器支持的语法,Lucene的查询语句解析器是使用JavaCC工
具生成的词法解析器,它将查询字串解析为Lucene Query对象。
项(Term)
一条搜索语句被拆分为一些项(term)和操作符(operator)。项有两种类型:单独项和
短语。
单独项就是一个单独的单词,例如test , hello。
短语是一组被双引号包围的单词,例如hello dolly。
多个项可以用布尔操作符连接起来形成复杂的查询语句(接下来您就会看到)。
注意:Analyzer建立索引时使用的解析器和解析单独项和短语时的解析器相同,因此选择
一个不会受查询语句干扰的Analyzer非常重要。luence1.4的StandardAnalyzer的解析器已
经支持中文等亚洲国家的文字了,可以直接。标准的解析其不支持中文。
域(Field)
Lucene支持域。您可以指定在某一个域中搜索,或者就使用默认域。域名及默认域是具体
索引器实现决定的。(怎么定制默认域?)
您可以这样搜索域:域名+:+搜索的项名。
举个例子,假设某一个Lucene索引包含两个域,title和text,text是默认域。如果您想查
找标题为The Right Way且含有dont 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:
通过增量一个项可以控制搜索文档时的相关度。
原创力文档


文档评论(0)