10

我正在使用 Solr,我想知道查询中是否可以包含 LIKE 子句。例如,我想知道所有标题中带有“纽约”的组织。在 SQL 中,这将被写成 Name LIKE 'New York%'。

我的问题 - 你如何在 Solr 中编写 LIKE 查询?

我正在使用 SolrNet 库,如果这有所作为的话。

4

2 回答 2

9

您只需搜索“纽约”,但首先您需要正确配置字段的分析器。例如,您可能希望从默认 Solr 架构text_general中定义的字段类型开始。此字段类型将对空格和其他常见单词分隔符进行标记,然后应用停用词过滤器,然后将术语小写以使搜索不区分大小写。

Solr wiki 中有关分析器的更多信息。

于 2012-01-17T22:25:51.093 回答
7

如果您使用的是 solr 3.1 或更新版本,请查看Extended DisMax Query Parser支持通配符查询的 . 您可以<str name="defType">edismax</str>在请求处理程序配置中启用它。

然后,您可以使用title:New York*与带有 like 子句的查询具有相同行为的查询。我的答案与接受的答案之间的主要区别在于,您甚至可以使用通配符搜索单词片段。例如New Yorkers,在这种情况下会匹配。不幸的是,即使您使用的是LowerCaseFilterFactory. 看看这里了解更多。由于SOLR-2438问题已解决,大多数问题将在 solr 3.6 版本中得到解决。

于 2012-01-18T08:35:52.473 回答