我是 Lucene 的新手,正在尝试将原始字符串解析为Query
使用QueryParser
.
我想知道为什么QueryParser.Parse()
方法根本需要分析器参数吗?
如果分析与查询有关,那么Analyzer
处理常规时应指定Query
对象以及(TermQuery
, BooleanQuery
等),如果不是,为什么QueryParser
需要吗?
建立索引时,Lucene 将文本划分为原子单元(标记)。在此阶段可能会发生很多事情(例如小写、词干、删除停用词等)。最终结果是一个术语。
然后,当您查询时,Lucene 对查询应用完全相同的算法,以便它可以将术语与术语进行匹配。
问:为什么不TermQuery
需要分析仪吗?
A: QueryParser
对象解析查询字符串并生成TermQuery
(还可以产生其他类型的查询,例如PhraseQuery
). TermQuery
已包含与索引中形状相同的术语。如果您(作为一名程序员)绝对确定自己在做什么,您可以创建一个TermQuery
你自己——但这假设你知道查询解析的确切顺序,并且你知道术语在索引中的样子。
问:为什么不BooleanQuery
需要分析仪吗?
A: BooleanQuery
只需使用运算符(AND/OR/MUST/SHOULD 等)连接其他查询。如果没有任何其他查询,它本身并没有多大用处。
这是一个very简化的答案。我强烈推荐阅读信息检索简介 http://nlp.stanford.edu/IR-book/书;它包含编写 Lucene(和其他类似框架)所依据的理论。这本书可以在线免费获取。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)