我正在开发的应用程序使用 solr 来索引和搜索条目。我一直在阅读一些关于背后的逻辑和语法的内容。目前,有一些代码让我感到困惑,我希望有人能够澄清为什么编写这段代码的人会这样做做到了。
trimmedSearchField = SolrQueryUtil.escapeQueryString(trimmedSearchField).replaceAll("\\s+", "+");
String qString = "+(title:" + trimmedSearchField + "^100 OR description_t:" + trimmedSearchField + "^10 " +
"OR +" + trimmedSearchField +"^1)";
我只是想引起人们对 .replaceAll 方法的注意,为什么我们要用 + 替换空格?我的目标是重构一点搜索栏,并在省略replaceAll 调用的情况下获得更好的结果。
示例:两个元素的描述分别为:“Helen of Troy”和“Helen from Troy”。在存在replaceAll的情况下,搜索“Helen of Troy”将只为我提供第一个元素,在replaceAll被删除的情况下,两个元素都会出现(这就是我想要发生的情况)
最佳答案
.replaceAll() 调用只是将任意一系列连续空格编码为单个“+”,这意味着 lucene syntax (and Solr) 中的“必需”
因此,它使“trimmedSearchField”在这些字段中成为必需。
关于java - Solr查询: replacing whitespace with +,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43772579/