【发布时间】:2023-03-27 06:14:01
【问题描述】:
我正在尝试将 solr 查询写入 API 以搜索特定票证并以 JSON 格式获取搜索数据。其中一个属性是包含特殊字符的长字符串。我应该怎么写?
这是出错的行,因此返回 0 张票:
assignedTo:tbw:ctv::76987684564353:user/Test-USER-Here
搜索的普通用户字符串是:'tbw:ctv::76987684564353:user/Test-USER-Here'
我试图转义上面的特殊字符,但它返回 0 个文档。
第二个问题,例如如何搜索以“tbw”开头的字符串?
提前致谢!
【问题讨论】:
-
Solr 中的文档是什么样的?
assignedTo:"tbw:ctv::76987684564353:user/Test-USER-Here"之类的查询应该能够找到该文档 - 您可能希望这是一个字符串字段,因为您只是在寻找完全匹配的内容。可以通过将wt=json附加到您的查询 url 来完成返回 JSON -
不,它以某种方式不起作用..而且我确信它应该返回文件。如果我想搜索以“Here”结尾的字符串,我该怎么写?
-
在这种情况下,您必须使用通配符 - 如果该字段是字符串字段 -
*Here。但通常这可以通过使用ReverseWildcardFilter和 KeywordTokenizer 来更好地实现 - 或者根据使用情况,使用 ngramfilter。匹配将基于字段类型,因此如上所述,您需要一个字符串字段来匹配精确值。 -
assignedTo:tbw\:ctv\:\:76987684564353\:user/Test-USER-Hereyield 是什么意思?