使用Solr全文搜索不规则说唱歌手的名字

Tom*_*man 6 ruby solr ruby-on-rails sunspot

我正在我的说唱网站上实现全文搜索功能,而且我遇到了一些关于说唱歌手和歌曲名称的问题.

例如,某人可能想要使用查询"camron" 搜索说唱歌手" Cam'ron "(省略中间词撇号).同样,有人可能会使用查询"3peat" 搜索歌曲" 3 Peat ".

" 臭名昭着的BIG "是一个奇怪的案例:"臭名昭着的BIG"和"臭名昭着的BIG"都有效(我猜因为solr.StandardFilterFactory从首字母缩略词中删除了点?),但是"臭名昭着的BIG"(即,减去尾随点)没有.

理想情况下,这些名称的所有合理变体都应该有效 我猜这个答案与solr.WordDelimiterFilterFactory有关,但我不确定.

此外,如果相关,我正在使用带有Rails的太阳黑子.

Yur*_*ish 10

是的,你是对的.您需要正确配置WordDelimiterFilterFactory.尝试启用所有属性,不要忘记启用preserveOriginal属性,这也将保存您的原始术语.

generateWordparts - 将从大的条款 -

generateNumberParts - 将从3Peat条款 - 3泥炭

catenateWords - 将从大的条款 -

catenateNumbers - 将使用Rapper 802.11术语 - Rapper 80211

catenateAll - 将使用Rapper-802.11术语 - Rapper80211

splitOnCaseChange - 将来自GanGsTa术语 - Gan Gs Ta

preserveOriginal - 也将保存原始术语.从Rapper-802.11RuuLlZ将制作 - Rapper-802.11RuuLlZ.

  • 很好的建议,谢谢.我将以下内容添加到`schema.xml`:`<filter class ="solr.WordDelimiterFilterFactory"stemEnglishPossessive ="1"splitOnNumerics ="1"splitOnCaseChange ="1"generateWordParts ="1"generateNumberParts ="1"catenateWords ="1 "catenateNumbers ="1"catenateAll ="1"preserveOriginal ="1"/>`.除了"大"案外,这似乎解决了所有问题.有任何想法吗? (2认同)