【问题标题】:Solr - equivalent to LIKE in SQLSolr - 相当于 SQL 中的 LIKE
【发布时间】:2011-07-01 08:52:46
【问题描述】:

我一直在尝试通过 ColdFusion 9 从数据库结果集中在 Apache Solr 中创建一个集合。我想在 SQL 中进行如下搜索:

select * from events where eventName like 'Meet%'

在 SQL 中,这将部分匹配一个单词并返回该行。我正在尝试使用 Solr 集合和 CF 中的 <cfsearch> 来执行此操作,如下所示:

<cfsearch collection="#myCollection#" criteria="Meet*" name="results" />

但是,除非我指定了完整的单词,否则我不会取回数据,尽管使用了通配符。 docs 表示在搜索开始时不允许使用通配符,但在搜索结束时并未表示不允许使用通配符。事实上对我来说它在任何地方都不起作用!

<!--- No results -->
<cfsearch collection="#myCollection#" criteria="Meet*" name="results" /> 

<!--- No results -->
<cfsearch collection="#myCollection#" criteria="Meet*g" name="results" />

<!--- No results -->
<cfsearch collection="#myCollection#" criteria="Meeti?g" name="results" />

<!--- Yes - results! -->
<cfsearch collection="#myCollection#" criteria="Meeting" name="results" />

是否有人使用&lt;cfsearch&gt; 实现了通配符 Solr 搜索?如果是这样,你能指出我正确的方向吗?

【问题讨论】:

    标签: coldfusion lucene full-text-search solr


    【解决方案1】:

    你看过this关于 Solr 中通配符搜索的帖子吗?只要您使用正确的查询解析器,即支持通配符查询的解析器,那么您应该能够使用“Meet*”进行“Meet%”查询。

    【讨论】:

    • 我正在使用应该支持通配符操作的 ColdFusion。
    • 请看问题。 * 运算符是我给出的示例之一。
    【解决方案2】:

    尝试“meet*”而不是“Meet*”。我发现通配符仅适用于小写字符串,因此每当搜索查询包含星号时,我 LCase() 将字符串传递给 Solr。

    【讨论】:

    • 这就是答案!难怪我得到令人困惑的结果。我希望文档能提到这一点——事实上我现在会在那里发表评论。
    猜你喜欢
    • 2011-02-14
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多