我在 Heroku 上运行的 Rails 应用程序上设置了 websolr。我只是注意到搜索“火山”并没有返回我预期的所有结果。具体来说,它确实返回了一个包含“火山”和“平流火山”的结果。
我需要如何修改 solr 配置来解决这个问题?
这是我的 schema.xml 中的相关部分
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" />
</analyzer>
</fieldType>
补充:我认为这无关紧要,但以防万一:
我的 Rails Photo.rb 模型设置如下:
searchable do
text :caption, :stored => true
text :category do
category.breadcrumb
end
integer :user_id
integer :category_id
string :caption
string :rights
end
标题和类别是我正在搜索的两个文本字段。Caption 是自由格式的文本,而 Category 是一个文本字符串,例如“Earth Science > Volcanoes”
这是我在 websolr 中显示的同义词配置(我添加了最后一行):
#some test synonym mappings unlikely to appear in real input text
aaa => aaaa
bbb => bbbb1 bbbb2
ccc => cccc1,cccc2
a\=>a => b\=>b
a\,a => b\,b
fooaaa,baraaa,bazaaa
# Some synonym groups specific to this example
GB,gib,gigabyte,gigabytes
MB,mib,megabyte,megabytes
Television, Televisions, TV, TVs
#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming
#after us won't split it into two words.
# Synonym mappings can be used for spelling correction too
pixima => pixma
volcano => volcanic,stratovolcanoes