Sunspot Solr搜索Rails活动记录’LIKE’搜索

嗨我一直在我的应用程序中使用正常的rails活动记录LIKE搜索,我开始使用太阳黑子solr搜索。 我希望它尽可能接近轨道LIKE搜索。


wine.rb

#sunspot stuff searchable :auto_index => true, :auto_remove => true do text :name end #sunspot stuff 

的solr / CONF / schema.xml中

        

application_controller.rb

 search_string = "will input some values here" query = "%" + search_string + "%" solr_search = Wine.search do fulltext search_string end @solr_search_results = solr_search.results.sort_by{|e| e[:id]} @rails_search_results = Wine.find(:all, :conditions => ['wines.name LIKE ?' , query]).sort_by{|e| e[:id]} 

搜索1
search_string =“grand”

@solr_search_results
186大储备
688 Grand Plaisir Cabernet Sauvignon Shiraz Malbec Petit Verdot Cabernet Franc
760 Grand Vin Blanc
768 Grand Rouge
857 Premier Grand Cru
1067大经典
1584 Grand Vin De Glenelly
3389 Grand Constance Muscat
3708GrandCuvèeBrut
3857 Grand Constance Muscat

@rails_search_results
186大储备
688 Grand Plaisir Cabernet Sauvignon Shiraz Malbec Petit Verdot Cabernet Franc
760 Grand Vin Blanc
768 Grand Rouge
857 Premier Grand Cru
969 River Grandeur Cape Blend
972 River Grandeur Cabernet Sauvignon
973 River Grandeur Chardonnay
974 River Grandeur Chenin Blanc
975 River Grandeur Pinotage
976 River Grandeur Sauvignon Blanc
977 River Grandeur Shiraz
978 River Grandeur Rose
1067大经典
1584 Grand Vin De Glenelly
3389 Grand Constance Muscat
3708GrandCuvèeBrut
3857 Grand Constance Muscat

好像Solr没有找到带有’Grandeur’的条目,它只发现完全匹配? 我怎样才能解决这个问题?


搜索2
search_string =“rood”

@solr_search_results
200 Dassies Rood Cinsaut Cabernet Sauvignon Ruby Cabernet
3198 Dassies Rood Cinsaut Cabernet Sauvignon Ruby Cabernet
3394鲁德

@rails_search_results
200 Dassies Rood Cinsaut Cabernet Sauvignon Ruby Cabernet
483 Roodeberg Red Cabernet Sauvignon Shiraz Merlot
484 Roodeberg White Sauvignon Blanc Chardonnay Chenin Viognier
1113 Zevenrood
3044 Roodewal
3198 Dassies Rood Cinsaut Cabernet Sauvignon Ruby Cabernet
3394鲁德
3477 Roodeberg Red
3478 Roodeberg White
3594 Roodeberg White
3604 Roodeberg Red

同样的事情发生在这里,当search_string =’rood’时,solr没有找到’Roodeberg’,它只找到完全匹配


更新

将nGramfilter添加到schema.xml以进行部分匹配,感谢DanS
但仍未显示所有结果

应用程序/ solr的/ CONF / schema.xml中

          

它仍然不能完成我想要它做的事情,看看下面的例子

search3
search_string =“merl”

@solr_search_results
130美乐
202梅洛
306美乐
336美乐
556梅洛
579梅洛
592美乐
623美乐
640美乐
689梅鹿辄
694梅洛
714梅鹿辄
776梅洛
790梅鹿辄
841梅洛
865梅洛
891梅洛
947美乐
1015美乐
1045美乐
1046美乐
1073美乐
1075美乐
1089梅鹿辄
1096梅洛
1111美乐
1121美乐
1144美乐
1145美乐
1169美乐

@rails_search_results
34 Cavalier Reserve Blend Merlot Cabernet Franc Cabernet Sauvignon Shiraz
129 Matt Black Cabernet Sauvignon Shiraz Merlot Petit Verdot Mourvedre Pinotage
130美乐
202梅洛
240 Grappa Cabernet Merlot Premium
306美乐
336美乐
416DryRosèMerlot
477 Orchestra Cabernet Sauvignon Malbec Merlot Cab Franc Sh​​iraz
483 Roodeberg Red Cabernet Sauvignon Shiraz Merlot
556梅洛
579梅洛
592美乐
614 Cabernet Merlot
623美乐
640美乐
656书法梅洛赤霞珠法郎长相思
672 Ondine Merlot
689梅鹿辄
694梅洛
696 Barrel Select Merlot
714梅鹿辄
762私人collections梅洛
776梅洛
790梅鹿辄
795私人collections梅洛
816 JJ手工葡萄酒梅鹿辄
832金三角梅洛
841梅洛
842梅洛玫瑰
854 Eagle Crest Cabernet Sauvignon Merlot
865梅洛
877 Winemakers Choice Merlot Shiraz
891梅洛
892梅洛保护区
893 Mountain Red Shiraz Merlot
941酒窖选择梅洛赤霞珠
943 Vineyard Selection Cabertnet Sauvignon Merlot Cab Franc Sh​​iraz
947美乐
982 Boet Erasmus Cabernet Sauvignon Merlot Malbec Petit Verdot
983 Cara Cabernet Sauvignon Shiraz Merlot
984 Classic Cabernet Sauvignon Shiraz Merlot
1010 Laureat Cabernet Sauvignon Merlot
1015美乐
1045美乐
1046美乐
1073美乐
1075美乐
1079 Cabernet / Merlot
1089梅鹿辄
1093 Adelberg Cabernet Sauvignon Merlot
1096梅洛
1104 Z Collection Cabernet Franc Merlot Cabernet Sauvignon
1111美乐
1121美乐
1144美乐
1145美乐
1169美乐
1186美乐
1254 Cabernet Sauvignon Merlot
1260 Cabernet Sauvignon / Merlot
1261美乐
1269美乐
1326美乐
1349 Cabernet Sauvignon Merlot
1364品种选择梅鹿辄
1381美乐
1384 Cabernet Sauvignon Merlot
1393 Cabernet Sauvignon Merlot
1401 Cabernet Sauvignon Merlot
1404美乐
1421 Petit Cabernet Sauvignon Merlot
1424美乐
1431系列梅洛
1443美乐
1454梅洛
1467 Poker Hill Shiraz Merlot
1468美乐
1476梅洛
1491环境美乐
1495 Peacock Ridge Merlot
1542美乐
1543美乐
1549美乐
1552美乐保护区
1582未过滤的梅洛
1592美乐
3001梅洛
3007 Cabernet Sauvignon Merlot
3036 Cabernet Sauvignon Merlot
3056梅洛
3067犹太美乐
3073有机梅鹿辄
3079 Premium Merlot
3091美乐
3106梅洛与一点马尔贝克
3133 Cabernet Sauvignon Merlot
3143 Five Climates Merlot
3154保留No1梅洛
3182 Lanoy Cabernet Sauvignon Merlot
3183 Reserve Collection Cab Sauv Merlot Cab Franc
3200梅鹿辄
3236 Giorgio Cabernet Sauvignon Merlot Petit Verdot Shiraz
3258 Danie De Wet Cabernet Sauvignon Merlot
3276 Red Cabernet Sauvignon Merlot Cab Franc Petit Verdot Shiraz
3288梅洛
3303 Quartet Pinotage Cabernet Sauvignon Merlot Shiraz
3307 Diversity Merlot Malbec
3311 Vineyard Creations梅洛
3318 Caapmans Cabernet Sauvignon Merlot
3321 Luipaardsberg Merlot
3322美乐
3326 Rhinofields Merlot
3334美乐
3343美乐
3363 Merlot Cabernet Sauvignon
3372美乐
3390美乐
3416 R 62 Merlot Cabernet Sauvignon
3418 Unplugged 62MerlotRosé
3419 Unplugged 62 Merlot Shiraz
3431美乐
3439 KC Cabernet Sauvignon Merlot
3471 Orchestra Cabernet Sauvignon Malbec Merlot Cab Franc Sh​​iraz
3497梅洛
3498 Merlot Cabernet Sauvignon
3510梅洛
3531美乐
3540美乐
3560美乐
3568梅洛玫瑰
3578特别版美乐
3581梅洛
3584 Cabernet Sauvignon Merlot
3624美乐
Merlot的3642 Cellar Selecti
3657梅洛
3677梅洛
3681梅洛
3685系列C Cabernet Sauvignon Merlot Cab Franc
3693美乐
3728 Alexanderfontein Merlot
3755 Peacock Ridge Merlot
3771老博物馆梅洛
3773酒窖选择Cabernet Sauvignon Merlot
3820美乐
3859梅洛
3882 Dunstone Merlot
3900 Duckitt Merlot Cabernet Sauvignon
3919梅洛
3947美乐

好像你想匹配子串 。

将以下filter添加到schema.xml以匹配索引文本的任何前缀:

  

或者以下匹配任意子串:

  

有关更多信息,请参阅Solr wiki 。

UPDATE2

固定! 似乎Solr默认只显示30个条目,所以它只显示最相关的匹配并跳过另一个我也想要的。
我添加了这个文件

的myapp /配置/初始化/ sunspot_solr.rb

 Sunspot.config.pagination.default_per_page = 3000