java Solr字段搜索、通配符和转义字符
我正在使用solr在我的webapp上实现搜索功能。我在每个用户的搜索末尾附加一个“*”。因此,如果搜索是:foo
,我将其更改为filename:foo*
这很好,只是用户的搜索中通常会包含连字符。对filename:foo-bar*
的搜索返回零结果,因为连字符将删除从其后的搜索项生成的任何搜索结果。我可以逃避它,就像filename:foo\-bar*
但是我仍然得到零结果。如果我尝试filename:foo"-"*
,搜索将返回所有文档
关于如何让-
和*
彼此友好相处有什么建议吗
谢谢你的帮助
# 1 楼答案
根据我的经验,如果字符串中的任何其他内容被转义,我必须转义通配符。这是为了让它起到通配符的作用;你可能认为它会让它寻找角色本身,但它似乎不是。注意:在没有其他转义字符的情况下转义*似乎可以精确搜索字符*,并且不会将其用作通配符运算符
说得清楚一点,它们似乎是倒退的,但哈斯在我的案例中就是这么做的