我想知道是否有任何我可以做的事情来帮助改善我在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
答案 0 :(得分:1)
确保您的fullext字段被视为文本而不是字符串,然后查看最小匹配设置:
http://wiki.apache.org/solr/DisMaxQParserPlugin#mm_.28Minimum_.27Should.27_Match.29
此外,您可能需要使用同义词来等同年份和年份。