2

我将 solr 用于我的 web 应用程序上的搜索功能。我在每个用户搜索的末尾附加一个“*”。因此,如果搜索是:foo我将其更改为filename:foo*

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

关于如何相处-和相处的任何建议*

谢谢您的帮助

4

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

需要明确的是,它们似乎是倒退的,但这就是我的情况。

于 2015-04-15T19:27:49.557 回答