Solr查询和完整字符串匹配

时间:2015-03-16 18:42:11

标签: solr

我目前正在开发一个针对Solr服务发送查询的程序,而且我还在解决Solr如何匹配字符串的问题。

例如,当我发送MaterialType:buc时,它匹配所有条目与MaterialType =" buc"和" ebuc"以及。有什么我可以做的告诉索尔我只想要一个完全匹配(或者它应该只匹配以&#34开头的字符串; buc")?

这是否可以在不改变solr服务配置的情况下实现?

此致 托拜厄斯

1 个答案:

答案 0 :(得分:1)

如何执行匹配取决于您的字段的定义方式。您可能正在查询带有附加分析链的TextField,它将术语bucebuc分解为相同的术语(例如使用EdgeNGramFilter或词干过滤器等)。

您可以直接使用StrField(只会提供完全匹配,区分大小写等),或者使用带有KeywordTokenizer的TextField(使整个术语保持不变)并仅应用LowercaseFilter使匹配大小写不敏感。

如果你想要匹配前缀,你可以在查询StrField后附加一个“*”,或者你可以使用其中一个ngramfilters并只从令牌的开头应用ngram。

所有这些更改都需要应用于您的架构(schema.xml),并且通常必须在架构更改后重新编制索引。