CloudSearch 中的通配符搜索
Wildcard search in CloudSearch
我需要在 CloudSearch 上对数字执行通配符查询。在文本数据上执行此操作很容易 -> xy* 但在 运行 对数字字段进行相同查询时会出错。我正在使用 lucene 作为查询解析器。请建议是否可以使用任何其他解析器。
数字字段不支持通配符搜索。从您的问题来看,不清楚您期望得到什么样的结果。
如果您希望匹配一个数字范围,那么您可以使用 范围查询:
numericField:[330 TO 339]
将匹配 numericField
大于或等于 330 且小于或等于 339 的文档。
另一方面,如果您希望找到第一个和第二个数字为三的所有文档,例如,您将需要另一个包含数字字符串表示形式的文本字段。您可以这样搜索它:
numericFieldAsText:33*
这将匹配 33
、331
、333
、330001
等
如果是结构化查询,您可以将过滤查询用作 (and (prefix field=field_name 'xy'))
。
但如果是简单的查询,那么你可以直接在搜索中使用xy*。
我需要在 CloudSearch 上对数字执行通配符查询。在文本数据上执行此操作很容易 -> xy* 但在 运行 对数字字段进行相同查询时会出错。我正在使用 lucene 作为查询解析器。请建议是否可以使用任何其他解析器。
数字字段不支持通配符搜索。从您的问题来看,不清楚您期望得到什么样的结果。
如果您希望匹配一个数字范围,那么您可以使用 范围查询:
numericField:[330 TO 339]
将匹配 numericField
大于或等于 330 且小于或等于 339 的文档。
另一方面,如果您希望找到第一个和第二个数字为三的所有文档,例如,您将需要另一个包含数字字符串表示形式的文本字段。您可以这样搜索它:
numericFieldAsText:33*
这将匹配 33
、331
、333
、330001
等
如果是结构化查询,您可以将过滤查询用作 (and (prefix field=field_name 'xy'))
。
但如果是简单的查询,那么你可以直接在搜索中使用xy*。