我正在使用 Solr,我想知道查询中是否可以包含 LIKE 子句。例如,我想知道所有标题中带有“纽约”的组织。在 SQL 中,这将被写成 Name LIKE 'New York%'。
我的问题 - 你如何在 Solr 中编写 LIKE 查询?
我正在使用 SolrNet 库,如果这有所作为的话。
您只需搜索“纽约”,但首先您需要正确配置字段的分析器。例如,您可能希望从默认 Solr 架构text_general
中定义的字段类型开始。此字段类型将对空格和其他常见单词分隔符进行标记,然后应用停用词过滤器,然后将术语小写以使搜索不区分大小写。
Solr wiki 中有关分析器的更多信息。
如果您使用的是 solr 3.1 或更新版本,请查看Extended DisMax Query Parser
支持通配符查询的 . 您可以<str name="defType">edismax</str>
在请求处理程序配置中启用它。
然后,您可以使用title:New York*
与带有 like 子句的查询具有相同行为的查询。我的答案与接受的答案之间的主要区别在于,您甚至可以使用通配符搜索单词片段。例如New Yorkers
,在这种情况下会匹配。不幸的是,即使您使用的是LowerCaseFilterFactory
. 看看这里了解更多。由于SOLR-2438问题已解决,大多数问题将在 solr 3.6 版本中得到解决。