2012-11-30 33 views
1

我正在使用Alex Shyba的高级数据库爬网程序对来自Sitecore和Lucene.NET查询的数据进行索引以进行搜索查询。当我尝试进行术语匹配时,例如en-US,zh-CN和de-DE,我在大多数情况下运行稳定,但遇到与_language字段有关的问题。使用Lucene.NET进行Sitecore语言搜索

它返回'en'文化的所有结果。但是,例如在zh-CN文化中,它将返回约99%的结果,并从每组中删除2-3篇文章。 en和zh-CN是同一项目的不同版本。我可以通过卢克在索引中看到关于这两种文化中物品的信息。

我在语言字段上使用TermQuery来返回数据。我尝试使用PhraseQuery和WildCardQuery,但每次都得到相同的结果。

我试着逃避连字符,因为标准分析器不喜欢带有反斜杠的超链节,但也没有工作。

在这一点上我没有想法。我怎样才能让我的查询返回所有匹配的文档?

谢谢

回答

0

ADC有自己的查询对象来定义搜索参数。只需使用SearchParam object上的Language属性按语言进行搜索即可。

+0

我没有意识到ADC有这个类。我使用Lucene.NET查询来构建我的逻辑。我的大部分代码已经完成,现在我不想重写任何东西。你可能有其他建议吗? – Gabbar

+0

我建议你看一下ADC中的代码,看看它是如何处理语言过滤的。 –

+0

看起来像在同一个类中,'ApplyLanguageClause()'方法在'BuiltinFields.Language'上为该语言的iso代码添加一个短语查询。 –