我在我的网络应用程序上使用 solr 来实现搜索功能。我在每个用户搜索的末尾附加一个“*”。因此,如果搜索是:foo
我将其更改为 filename:foo*
这很好用,只是连字符通常会包含在用户的搜索中。搜索 filename:foo-bar*
返回零结果,因为连字符删除了它后面的搜索词产生的任何搜索结果。我可以将其转义为 filename:foo\-bar*
但我仍然得到零结果。如果我尝试 filename:foo"-"*
搜索将返回所有文档。
关于如何让 -
和 *
彼此友好相处有什么建议吗?
感谢帮助
最佳答案
根据我的经验,如果字符串中的任何其他内容被转义,我不得不转义通配符。这是为了让它起到通配符的作用;你会认为它会让它寻找角色本身,但它似乎不会。注意:在没有其他转义字符的情况下转义 * 似乎完全搜索字符 *,而不是将其用作通配符。
field:*and\/or* //would NOT perform a wildcarded search for "and/or"
field:\*and\/or\* //would perform wildcard search for and/or
需要明确的是,它们似乎是倒退的,但这在我的案例中是有效的。
关于java - Solr 字段搜索、通配符和转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19455574/