Скажем, у меня есть этот код в моей модели:
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" и получите оба объекта в ответе, но счет равен 5.003391 для "кафе sun" и 1.250491 для настоящего "cafe"
Для второй попытки я установил
boost_fields :name => 1.9, :facility_type => 3
Оценка «кафе солнце» не меняется, но «кафе» несколько выросла - 1,8896824
Итак, пока результаты сортируются по результату, меня интересует, как он рассчитывается?
Или я выбираю неправильные токенизаторы или что-то еще, вот что у меня есть в 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>