有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Solr字段搜索、通配符和转义字符

我正在使用solr在我的webapp上实现搜索功能。我在每个用户的搜索末尾附加一个“*”。因此,如果搜索是:foo,我将其更改为filename:foo*

这很好,只是用户的搜索中通常会包含连字符。对filename:foo-bar*的搜索返回零结果,因为连字符将删除从其后的搜索项生成的任何搜索结果。我可以逃避它,就像filename:foo\-bar*但是我仍然得到零结果。如果我尝试filename:foo"-"*,搜索将返回所有文档

关于如何让-*彼此友好相处有什么建议吗

谢谢你的帮助


共 (1) 个答案

  1. # 1 楼答案

    根据我的经验,如果字符串中的任何其他内容被转义,我必须转义通配符。这是为了让它起到通配符的作用;你可能认为它会让它寻找角色本身,但它似乎不是。注意:在没有其他转义字符的情况下转义*似乎可以精确搜索字符*,并且不会将其用作通配符运算符

    field:*and\/or* //would NOT perform a wildcarded search for "and/or"
    
    field:\*and\/or\* //would perform wildcard search for and/or
    

    说得清楚一点,它们似乎是倒退的,但哈斯在我的案例中就是这么做的