【发布时间】:2014-04-22 00:29:18
【问题描述】:
我很难找到一些关于我的 lucene 搜索发生了什么的信息。
(Id:gloves* Search:gloves* SpellCheckerSource:gloves*) OR
(Id:gloves Search:gloves SpellCheckerSource:gloves) OR
(Id:glove* Search:glove* SpellCheckerSource:glove*)
当我搜索上述内容时,我得到以下重写的术语
(() () ())
(Id:glove Search:glove SpellCheckerSource:glove)
(() ConstantScore(Search:glove*) ConstantScore(SpellCheckerSource:glove*))
这是使用 LUKE,我一直在 LUKE 中运行查询以尝试查看发生了什么。 http://www.getopt.org/luke/
现在我想做的是搜索一个词,即手套*,它最终是 (() () ())
我不明白为什么会这样翻译,而且我的查询或索引有问题?
LUKE告诉我结构解释如下
lucene.BooleanQuery
clauses=3, maxClauses=1024
Clause 0: SHOULD
lucene.BooleanQuery
clauses=3, maxClauses=1024
Clause 0: SHOULD
lucene.BooleanQuery
clauses=0, maxClauses=1024, coord=false
Clause 1: SHOULD
lucene.BooleanQuery
clauses=0, maxClauses=1024, coord=false
Clause 2: SHOULD
lucene.BooleanQuery
clauses=0, maxClauses=1024, coord=false
Clause 1: SHOULD
lucene.BooleanQuery
clauses=3, maxClauses=1024
Clause 0: SHOULD
lucene.TermQuery
Term: field='Id' text='glove'
Clause 1: SHOULD
lucene.TermQuery
Term: field='Search' text='glove'
Clause 2: SHOULD
lucene.TermQuery
Term: field='SpellCheckerSource' text='glove'
Clause 2: SHOULD
lucene.BooleanQuery
clauses=3, maxClauses=1024
Clause 0: SHOULD
lucene.BooleanQuery
clauses=0, maxClauses=1024, coord=false
Clause 1: SHOULD
lucene.ConstantScoreQuery, ConstantScore(Search:glove*)
Filter: Search:glove*
Clause 2: SHOULD
lucene.ConstantScoreQuery, ConstantScore(SpellCheckerSource:glove*)
Filter: SpellCheckerSource:glove*
这在多个层面上对我来说似乎很奇怪
- 为什么我得到了翻译的空白从句?
- 为什么我要混合使用 TermQuery、ConstantScoreQuery 和 BooleanQuery?
- ConstantScoreQuery 在哪里生成?
应该注意,当我搜索一个没有和 s IE 手套或没有通配符的术语时,一切对我来说都很好,只是两者的组合似乎会破坏查询。
【问题讨论】:
标签: lucene.net lucene