我在我的webapp上使用solr搜索功能。我在每个用户的搜索结尾附加一个“*”。因此,如果搜索结果为:foo
我将其更改为filename:foo*
这样可以正常工作,但通常在用户的搜索中包含连字符。搜索filename:foo-bar*
会返回零结果,因为连字符会删除从搜索词后面生成的所有搜索结果。我可以逃脱它,如filename:foo\-bar*
但我仍然得到零结果。如果我尝试filename:foo"-"*
,搜索会返回所有文档。
有关如何让-
和*
互相玩耍的任何建议吗?
感谢您的帮助
答案 0 :(得分:1)
根据我的经验,如果字符串中的其他内容被转义,我必须转义通配符。这是为了使它作为通配符起作用;你认为它会让它寻找角色本身,但似乎没有。注意:在没有其他转义字符的情况下转义*似乎完全搜索字符*,并且不将其用作通配符运算符。
field:*and\/or* //would NOT perform a wildcarded search for "and/or"
field:\*and\/or\* //would perform wildcard search for and/or
要清楚,似乎他们是倒退的,但这就是我的情况下的工作原理。