Search lucene筛选器:FieldCacheTermsFilter不支持空格和特殊字符

Search lucene筛选器:FieldCacheTermsFilter不支持空格和特殊字符,search,lucene,Search,Lucene,我使用FieldCacheTermsFilter筛选出与字段值匹配的结果,如下所示。 过滤器过滤器=新的FieldCacheTermsFiltercity,多伦多 这可以很好地工作,但如果值之间有空格或特殊字符(如下面所示),则无法工作 过滤器过滤器=纽约新FieldCacheTermsFiltercity; 过滤器过滤器=新的FieldCacheTermsFiltertype,b&b 有没有其他过滤器可以实现这一点 PS:我之所以使用FieldCacheTermsFilter,是因为我想准确地

我使用FieldCacheTermsFilter筛选出与字段值匹配的结果,如下所示。 过滤器过滤器=新的FieldCacheTermsFiltercity,多伦多

这可以很好地工作,但如果值之间有空格或特殊字符(如下面所示),则无法工作

过滤器过滤器=纽约新FieldCacheTermsFiltercity; 过滤器过滤器=新的FieldCacheTermsFiltertype,b&b

有没有其他过滤器可以实现这一点

PS:我之所以使用FieldCacheTermsFilter,是因为我想准确地搜索与toronto而不是greater toronto匹配的单词。我尝试使用TermFilter来提取包含toronto的所有记录。

您的问题不是TermsFilter,而是您的分析器。分析应该适合您在该领域的需要


如果需要获得整个字段的精确匹配,则应将其索引为or use或。如果您使用StandardAnalyzer编制索引,则根本没有什么好方法可以满足您的要求。

谢谢femto!我需要搜索的标准分析器,但我也做我的搜索方面。因此,只有当我深入到所选的刻面结果时,我才需要这个精确的搜索。否则,常规搜索应该遵循标准的Analzyings,以便在不同的字段中对其进行双向索引。这应该可以工作,但会增加我的磁盘空间。如果没有其他选择,我应该采用这种方法。非常感谢你的帮助