如何在 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 中搜索短语的主要内容,如果未能解决你的问题,请参考以下文章
使用 SolrTemplate 使用 Spring-data-solr 进行枢轴分面
如何使用 EmbeddedSolrServer 和多核支持设置 Spring Data Solr?