hai*_*770 8 lucene analyzer query-parser
我是Lucene的新手并试图将原始字符串解析为Query使用QueryParser.
我想知道,为什么该QueryParser.Parse()方法需要一个Analyzer参数?
如果分析是某种与查询做,那么Analyzer应该定期处理时所指定Query的对象,以及(TermQuery,BooleanQuery等等),如果不是,为什么QueryParser需要它?
min*_*das 10
索引时,Lucene将文本划分为原子单位(标记).在此阶段,可能会发生许多事情(例如,小写,词干,删除停用词等).最终结果是一个术语.
然后,当您查询时,Lucene将完全相同的算法应用于查询,以便它可以将术语与术语匹配.
问:为什么TermQuery不需要分析仪?
答:QueryParser对象解析查询字符串并生成TermQuery(例如,还可以生成其他类型的查询PhraseQuery).TermQuery已经包含与索引中相同形状的术语.如果您(作为程序员)完全确定您在做什么,您可以TermQuery自己创建- 但这假设您知道查询解析的确切顺序,并且您知道条件在索引中的外观.
问:为什么BooleanQuery不需要分析仪?
答:BooleanQuery只需使用运算符(AND/OR/MUST/SHOULD等)加入其他查询.没有任何其他查询,它本身并没有用.
这是一个非常简化的答案.我强烈推荐阅读"信息检索简介"一书; 它包含了基于Lucene(和其他类似框架)编写的理论.这本书可以在线免费获得.
| 归档时间: |
|
| 查看次数: |
3306 次 |
| 最近记录: |