我正在将solr用于企业应用程序。到目前为止,它运行良好,因为我正在使用ngram字段进行搜索。它适用于部分查询(与索引的ngrams匹配)。但我遇到的问题是,如何强制执行确切的查询匹配?例如,查询“测试1”应与用户使用双引号输入时完全相同的文本匹配。目前由于我使用了一些标记器和过滤器,双引号被过滤掉了,查询"test 1", "tEst 1" or "TEST 1"
没有区别(这是因为我使用了分析器链,但需要使用ngrams和partial搜索)。
目前我正在搜索ngram查询字段。为了实施精确的查询匹配,我该怎么办?什么是最佳做法?目前我认为是从客户端识别双引号并将查询字段更改为原始字段(不包括ngrams)。但我觉得应该有更好的方法来做到这一点,因为我遇到的问题是通用的,solr
是一个完整的企业级搜索引擎。
答案 0 :(得分:0)
您可以为其添加field
,并为其string
添加fieldType
并将其编入索引。
如果您想要执行完全匹配,可以在上面的字段中查询。
当您想要执行部分搜索时..您可以查询由ngram索引的早期字段。
或..这是您可以尝试的另一种方式。
您已使用ngram定义了当前字段类型。在索引时你可以定义ngram标记器,对于查询,你只提到keywordTokenizer和小写过滤器工厂。
虽然索引文本将被标记化,但在执行查询时却不会。