如何在 Spring Data Solr 1.0 中搜索短语

Posted

技术标签:

【中文标题】如何在 Spring Data Solr 1.0 中搜索短语【英文标题】:How to search on phrases in Spring Data Solr 1.0 【发布时间】:2013-10-15 12:32:20 【问题描述】:

我有一个包含引用短语和其他词的搜索查询,并且想使用 spring-data-solr 1.0。

这是一个示例查询:dog "siamese cat" penguin

我一直在尝试类似的东西,

new Criteria("myfield").contains("dog")
        .and(new Criteria("myfield").contains("siamese cat"))
        .and(new Criteria("myfield").contains("penguin"));

这就是我一直在尝试的,直到我看到 contains() 在包含空格时抛出异常。

最近我在尝试.expression(),但不确定它是如何工作的,或者这是否是一个可行的解决方案。

有什么想法吗?谢谢/w

【问题讨论】:

.is() 似乎工作正常,但不确定这是否与 *siamese cat* 匹配。 是的。 is 会在中间有空格的情况下做一个短语。但是 * 会被转义。表达式将采用给定的字符串,不做进一步处理。 【参考方案1】:

我用表达式解决它:

new Criteria("myfield").expression("\"siamese cat\"")

【讨论】:

试试这个 .expression("(siamese AND cat)")【参考方案2】:

这对我有用...因为空间是一个特殊的字符,只需将其转义:

new Criteria("myfield").expression("siamese\ cat")

【讨论】:

以上是关于如何在 Spring Data Solr 1.0 中搜索短语的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Spring Data Solr 搜索嵌套对象?

使用 SolrTemplate 使用 Spring-data-solr 进行枢轴分面

如何使用 EmbeddedSolrServer 和多核支持设置 Spring Data Solr?

使用spring-data-solr做solr客户端

如何使用spring-data-solr编写查询,返回特定字段的所有值的列表

Solr和Spring Data Solr