gpt4 book ai didi

ruby - 太阳黑子 `LIKE`查询

转载 作者:数据小太阳 更新时间:2023-10-29 08:54:04 28 4
gpt4 key购买 nike

我正在使用 sunspot。如何运行 LIKE 查询 (LIKE %q%)?我想做这样的事情:

 @search = Sunspot.search(User) do |q|
q.text_fields { with(:company_name).like(params[:q]) }
end.results

代替:

@search = Sunspot.search(User) do |q|
q.text_fields { with(:company_name).starting_with(params[:q]) }
end.results

这部分对我有用。查看sunspot代码,我发现了这段代码:

class StartingWith < Base
private

def to_solr_conditional
"#{solr_value(@value)}*"
end
end

它基本上生成以下太阳黑子搜索哈希:

Sunspot.search(User) do |q| 
q.text_fields { with(:company_name).starting_with("sta")} }
end

=> Sunspot::Search:{:q=>"*:*", :fq=>["type:User", "company_name_text:sta*"]}

如果没有更简单的方法来实现 LIKE %query%,我应该如何使用 to_solr_conditional 方法创建一个新类 Like生成 SOLR 逻辑?

最佳答案

如果您使用标准的 DisMax 处理器,它不支持通配符。您有 2 个选择:

一个。激活 EdgeNGramFilter:

<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
..
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
..
</analyzer>
</fieldType>

使用每晚构建 Solr 与 EDismax Handler .

参见 wiki article on sunspot docssimilar question on SO .

关于ruby - 太阳黑子 `LIKE`查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5943254/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com