Solr 查询和全字符串匹配

Solr Query and Full String Matching

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

例如,当我发送 MaterialType:buc 时,它会匹配 MaterialType = "buc" 和 "ebuc" 的所有条目。我能做些什么来告诉 Solr 我只想要完全匹配(或者它应该只匹配以 "buc" 开头的字符串)?

这甚至可以不更改 solr 服务的配置吗?

问候 托拜厄斯

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

您可以直接使用 StrField(这只会为您提供精确匹配、区分大小写等),或者您使用带有 KeywordTokenizer 的 TextField(这会保留整个术语)并且只应用使匹配不区分大小写的 LowercaseFilter。

如果您想要前缀匹配,您可以在查询 StrField 后附加一个“*”,或者您可以使用其中一个 ngram 过滤器并仅从标记的开头应用 ngram。

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