相关疑难解决方法(0)

TermQuery不会返回已知的搜索词,但WildcardQuery会这样做

我希望有足够洞察Lucene内部运作的人可能能够指出我正确的方向=)

我将跳过大部分周围的相关代码,并切入正确的追逐.我有一个Lucene索引,我将以下字段添加到索引中(变量由其文字值替换):

document.Add( new Field("Typenummer", "E5CEB501A244410EB1FFC4761F79E7B7", 
                        Field.Store.YES , Field.Index.UN_TOKENIZED));
Run Code Online (Sandbox Code Playgroud)

稍后,当我搜索我的索引(使用其他类型的查询)时,我能够验证该字段确实出现在我的索引中 - 比如循环遍历Document.GetFields()返回的所有Fields

Field: Typenummer, Value: E5CEB501A244410EB1FFC4761F79E7B7
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好 :-)

现在真正的问题是 - 为什么我不能使用TermQuery来搜索这个值并实际获得结果.

此代码产生0次点击:

// Returns 0 hits
bq.Add( new TermQuery( new Term( "Typenummer", 
        "E5CEB501A244410EB1FFC4761F79E7B7" ) ), BooleanClause.Occur.MUST );
Run Code Online (Sandbox Code Playgroud)

但是,如果我将其切换为WildcardQuery(没有通配符),我会得到我期望的1点击.

// returns the 1 hit I expect
bq.Add( new WildcardQuery( new Term( "Typenummer", 
        "E5CEB501A244410EB1FFC4761F79E7B7" ) ), BooleanClause.Occur.MUST );
Run Code Online (Sandbox Code Playgroud)

我检查了字段长度,我已经检查过我使用相同的分析仪等等,我仍然在方块1上为什么会这样.

任何人都可以指出我应该看的方向吗?

lucene lucene.net sitecore sitecore6

7
推荐指数
1
解决办法
1661
查看次数

标签 统计

lucene ×1

lucene.net ×1

sitecore ×1

sitecore6 ×1