我正在my rap website上实现全文搜索功能,而且我遇到了一些关于说唱歌手和歌曲名称的问题。
例如,某人可能想要使用查询“camron”搜索说唱歌手“Cam'ron”(省略中间词撇号)。同样,有人可能会使用查询“3peat”来搜索歌曲“3 Peat”。
“The Notorious B.I.G.”是一个奇怪的案例:“臭名昭着的大”和“臭名昭着的B.I.G.”两个都工作(我猜是因为solr.StandardFilterFactory从首字母缩略词中删除了点?),但是“臭名昭着的B.I.G”(即减去尾随点)却没有。
理想情况下,这些名称的所有合理变体都应该有效。我猜这个答案与solr.WordDelimiterFilterFactory有关,但我不确定。
此外,如果相关,我正在使用带有Rails的太阳黑子。
答案 0 :(得分:10)
是的,你是对的。您需要正确配置WordDelimiterFilterFactory。尝试启用所有属性,不要忘记启用preserveOriginal属性,这也将保存您的原始术语。
generateWordparts - 将来自 B.I.G。条款 - B I G
generateNumberParts - 将来自 3Peat 条款 - 3 Peat
catenateWords - 将来自 B.I.G。条款 - BIG
catenateNumbers - 将来自 Rapper 802.11 条款 - 说唱歌手80211
catenateAll - 将来自 Rapper-802.11 术语 - Rapper80211
splitOnCaseChange - 将来自 GanGsTa 条款 - Gan Gs Ta
preserveOriginal - 也会保存原始字词。从 Rapper-802.11RuuLlZ 将 - Rapper-802.11RuuLlZ 。