惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
Jina AI
Jina AI
博客园_首页
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
Forbes - Security
Forbes - Security
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
The Register - Security
The Register - Security
N
News | PayPal Newsroom
S
Security Archives - TechRepublic
量子位
Cisco Talos Blog
Cisco Talos Blog
V
V2EX
C
Cisco Blogs
The Cloudflare Blog
Stack Overflow Blog
Stack Overflow Blog
L
LangChain Blog
Scott Helme
Scott Helme
S
Securelist
Security Latest
Security Latest
爱范儿
爱范儿
TaoSecurity Blog
TaoSecurity Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
I
Intezer
L
LINUX DO - 最新话题
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Check Point Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
美团技术团队
Know Your Adversary
Know Your Adversary
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
PCI Perspectives
PCI Perspectives
月光博客
月光博客
T
Tailwind CSS Blog
Cloudbric
Cloudbric
小众软件
小众软件
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
K
Kaspersky official blog
D
DataBreaches.Net
博客园 - 【当耐特】
有赞技术团队
有赞技术团队

博客园 - 寒 刚入门

如何在IIS7或IIS7.5中导入导出站点及应用程序池. 编程点滴.验证信息本地化遇到的问题 编程点滴.技巧小记.处理"可疑"数据库 编程点滴.技巧小记.数据库链接 Razor 语法快速参考 [转]SQL,LINQ,Lambda语法对照图 编程点滴.LUCENE保存检索表达式遇到的问题 - 寒 刚入门 - 博客园 编程点滴.如何在VS2010中使用Regex Editor - 寒 刚入门 小玩意.包含全国省市区街道邮编的数据库 编程点滴.LUCENE高亮代码 编程点滴.LUCENE.Luke查询工具 - 寒 刚入门 - 博客园 编程点滴.LUCENE.常用分词器 编程点滴.LUCENE执行检索和分页 编程点滴.LUCENE.对数字、日期、时间等进行索引 - 寒 刚入门 - 博客园 编程点滴.LUCENE的FILED选项 jQuery1.3.2的选择器在IE8小[checked]失效的简单解决方法 我写的找重复数和过桥问题. CuteEditor6完整汉化包(更新到6.1) ASP.NET中设置CheckBox和RadioButton的默认值不可改变,并不丢失样式!
编程点滴.LUCENE的检索方式
寒 刚入门 · 2010-09-02 · via 博客园 - 寒 刚入门

TermQuery

这个检索通常查找文档中唯一数据的字段(在更新索引时特别有用),一般这个字段使用Field.Index.NOT_ANALYZED方式保存索引(但并不意味着所有Field.Index.NOT_ANALYZED方式保存索引的字段有唯一值).

Term t = new Term("contents", "java");
Query query = new TermQuery(t);
//最终表达式就是contents:java

TermRangeQuery

范围检索,可以返回在两个单词之间的数据.

TermRangeQuery query = new TermRangeQuery("title", "d", "j", true, true);
//或者
TermRangeQuery query = new TermRangeQuery("title", "tim", "tom", true, true);
//最终表达式就是title:[d TO j]

NumericRangeQuery

数字范围检索,可以返回在两个数字直接的数据.在建索引时,该字段必须是以数字方式建的.并且创建时和检索时的使用的数字类型要相同.

NumericRangeQuery query = NumericRangeQuery.newIntRange("pubmonth",198805,198810,true,true);
//最终表达式就是pubmonth[198805 TO 198810]

PrefixQuery

前缀检索,就像数据库里的LIKE 'abc%'一样.普遍用于产品分类,不确定单词等.

Term term = new Term("category", "/technology/computers/programming");
//或者
Term term = new Term("title", "can");
PrefixQuery query =  new PrefixQuery(term);
//最终表达式就是title:can*

BooleanQuery

布尔检索,对两个Query进行逻辑运算.选项有BooleanClause.Occur.MUST, BooleanClause.Occur.SHOULD 和 BooleanClause.Occur.MUST_NOT.

TermQuery searchingBooks = new TermQuery(new Term("subject","search")); //A 检索subject中有search的
Query books2004 = NumericRangeQuery.newIntRange("pubmonth", 200401, ,200412,true, true); //B 检索出版时间范围
BooleanQuery searchingBooks2004 = new BooleanQuery(); //用于最终合并的检索
searchingBooks2004.add(searchingBooks, BooleanClause.Occur.MUST); //必须有A检索的结果
searchingBooks2004.add(books2004, BooleanClause.Occur.MUST);//必须有B检索的结果
//最终表达式就是+subject:search +pubmonth[200401 TO 200412]

PhraseQuery

短语检索,可以检索一个短语或词组.可以设置单词间隔距离,默认是1

PhraseQuery query = new PhraseQuery(); // 创建短语Query
query.setSlop(slop); // 设置间隔
for (int i=0; i < phrase.length; i++) {
query.add(new Term("field", phrase[i])); // 增加短语
}
//最终表达式就是title:"sloppy phrase"~5 ~5表示间隔 

WildcardQuery

通配符检索,可以使用?,*这些通配符进行检索.?代表一个字符,*代表多个字符.(注意在单词开头使用通配符会严重影响效率)

Query query = new WildcardQuery(new Term("contents", "?ild*"));
//最终表达式就是contents:?ild*

FuzzyQuery

模糊检索,可以检索相似的词.比如wuzza和fuzzy.(模糊检索也会影响效率)

Query query = new FuzzyQuery(new Term("contents", "wuzza"));
//最终表达式就是contents:wuzza~0.5

MatchAllDocsQuery

匹配全部文档,顾名思义就是匹配全部文档的意思.

Query query = new MatchAllDocsQuery(field);
//最终表达式就是*:*

注意,字段名和值都要区分大小写!

LUCENE.NET QQ交流群(81361051)