java - Solr查询: replacing whitespace with +

标签 java solr

我正在开发的应用程序使用 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/

相关文章:

solr - Solr 中的 "protected phrase"

solr - 如何向Solr查询空字段或特定值

Solr 英语同义词标准列表

java - Alfresco solr 跟踪失败

java - 在 servlet 过滤器中向请求添加 HTTP header

java - 为什么我的断言失败 - 预期为 'x' 但发现为 'x' ?

java - 如果输入为空,带有 EditText 的警报对话框将关闭

java - Java8 中将列表分区为子列表

java - 在 Android 上更改 DateFormat 中的时间

solr - Lucene 将分类法和 DocValues 方面结合使用