说,我的模型中有这段代码:
class Facility < ActiveRecord::Base
...
searchable do
text :name
text :facility_type do
end
...
这在搜索控制器中:
@search = Facility.search do
keywords(query) do
boost_fields :name => 1.9,
:facility_type => 1.98
end
...
而且我有两个 Facility 对象 - 第一个具有类型“cafe”,但名称中没有单词“cafe”,第二个 - 例如称为“cafe sun”,但属于“bar”类型事实。
我使用 query="cafe" 运行搜索并在响应中获取两个设施,但“cafe sun”的得分为 5.003391,真正的“cafe”得分为 1.250491
第二次尝试我设置
boost_fields :name => 1.9, :facility_type => 3
“cafe sun”的分数没有变化,但“cafe”有点长大 - 1.8946824
所以,只要结果按分数排序,我很感兴趣它是如何计算的?
还是我选择了错误的标记器或其他东西,这就是我在 schema.xml 中的内容
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory"
minGramSize="3"
maxGramSize="30"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>