我正在使用Solr,我想知道是否可以在查询中使用LIKE子句。例如,我想知道标题中所有“纽约”的组织。在SQL中,这将写成Name LIKE'New York%'。
我的问题 - 你如何在Solr中编写一个LIKE查询?
我正在使用SolrNet库,如果这有所不同。
答案 0 :(得分:7)
您只需搜索“纽约”,但首先需要正确配置您的现场分析仪。例如,您可能希望以default Solr schema中定义的text_general
字段类型开头。此字段类型将在空格和其他常用字词分隔符上进行标记,然后应用停用词过滤器,然后小写字词以使搜索不区分大小写。
有关analyzers in the Solr wiki的更多信息。
答案 1 :(得分:6)
如果您使用的是solr 3.1或更新版本,请查看支持通配符查询的Extended DisMax Query Parser
。您可以在请求处理程序配置中使用<str name="defType">edismax</str>
启用它。
然后,您可以使用类似title:New York*
的查询,其行为与具有like子句的查询相同。我的答案和被接受的答案之间的主要区别在于您甚至可以使用通配符搜索单词的片段。例如,New Yorkers
在这种情况下匹配。
遗憾的是,即使您使用的是LowerCaseFilterFactory
,也可能会遇到区分大小写的查询问题。看看here了解更多信息。由于SOLR-2438问题已经解决,因此大多数问题将通过solr 3.6版本修复。