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

标签 java solr solrj

我在我的网络应用程序上使用 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/

相关文章:

linux - 添加核心 : Solr Error

solr - tika solr 集成

java - Play Framework 2.4.6 不安装依赖项

java日期到sql日期类型转换

java - <absolute-ordering> 在 tomcat 7 中不起作用

java - 将 Java Web Start 与 JavaFX 的 native bundle 结合使用

SolrJ - 启用身份验证插件时无法提交更新

java - 日志分析: finding lines by time difference

solr - 突出显示不同颜色的每个查询关键字

java - 使用 SolrJ 客户端连接器 3.6 连接到 Solr 1.4