1

我已经使用 StandardAnalyzer 建立了一个索引,在这个索引中有几个字段。例如,假设它具有 Id 和 Type。两者都是 NON_ANALYZED,这意味着您只能按原样搜索它们。

我的索引中有一些条目:

 {Id: "1", Type: "Location"},
 {Id: "2", Type: "Group"},
 {Id: "3", Type: "Location"}

当我搜索+Id:1或任何其他数字时,我会得到适当的结果(再次使用 StandardAnalyzer)。

但是,当我搜索+Type:Location或 时+Type:Group,我没有得到任何结果。奇怪的是,当我启用前导通配符时,+Type:*ocation确实会返回结果!+Type:*Location或其他组合不。

这让我相信索引器/查询不喜欢大写字符!在将类型小写到索引它们之前locationgroup我可以搜索它们。

如果我将 Type-field 设置为 ANALYZED,它几乎可以用于任何搜索(大写/小写等),但我想按原样查询 Type-field。

我完全困惑为什么它会这样做。谁能向我解释为什么我的索引器不允许我搜索具有大写价值的 NON_ANALYZED 字段?

4

1 回答 1

2

解析查询字符串 ( ) 时是否使用 StandardAnalyzer +Type:Location?StandardAnalyzer 会将所有术语小写,因此您实际上是在使用+Type:location.

搜索和索引时始终使用相同的分析器。查看使用 PerFieldAnalyzer 并将 Type 字段设置为使用 KeywordAnalyzer。

于 2016-01-18T16:29:52.840 回答