使用solr +太阳黑子改善搜索结果

时间:2012-02-20 05:49:57

标签: ruby-on-rails solr sunspot

我想知道是否有任何我可以做的事情来帮助改善我在solr看到的搜索结果。

我有一个带有文字字段“name”的产品型号,其值为“The Glenlivet 18 year”。

我的产品型号中有这个可搜索的块:

searchable do
  text :name
end

当我搜索“The Glenlivet Single Malt Scotch 18 Yr.750ML”时,我得到零结果。

1.9.3-p0 :001 > Product.search { fulltext "The Glenlivet Single Malt Scotch 18 Yr. 750ML"}.results
=> []

似乎我必须真正归结搜索查询以获得结果,这不是很有用。

1.9.3-p0 :002 > Product.search { fulltext "The Glenlivet 18 Yr. 750ML"}.results
=> []

1.9.3-p0 :006 > Product.search { fulltext "The Glenlivet Single Malt 18"}.results
=> []

真的这样的接缝应该有效。

1.9.3-p0 :003 > Product.search { fulltext "The Glenlivet 18 Yr."}.results
=> []

然后终于

1.9.3-p0 :007 > Product.search { fulltext "Glenlivet 18"}.results
Product Load (0.2ms)  SELECT `products`.* FROM `products` WHERE `products`.`id` IN (8)
=> [#<Product id: 8, name: "The Glenlivet 18 year"] 

这是sunspot_solr gem创建的solr中的所有默认设置。这是我的配置文件:

有了这些结果,它几乎违背了全文搜索的目的。有没有我可以调整的设置或我可以做的任何其他设置,以便这些结果看起来不那么严格?

编辑:

添加:minimum_match => 4并设置同义词似乎可以提供我想要的结果。

Product.search { fulltext "The Glenlivet Single Malt Scotch 18 Yr. 750ML", :minimum_match => 4}.results 

1 个答案:

答案 0 :(得分:1)

确保您的fullext字段被视为文本而不是字符串,然后查看最小匹配设置:

http://wiki.apache.org/solr/DisMaxQParserPlugin#mm_.28Minimum_.27Should.27_Match.29

此外,您可能需要使用同义词来等同年份和年份。