Полнотекстовый поиск нерегулярных имен рэперов с помощью Solr - PullRequest
6 голосов
/ 24 мая 2010

Я реализую функцию полнотекстового поиска на моем рэп-сайте , и у меня возникают некоторые проблемы с именами рэперов и песен.

Например, кто-то может захотеть найти рэпера " Cam'ron ", используя запрос "camron" (пропуская апостроф в середине слова). Аналогично, кто-то может искать песню " 3 Peat ", используя запрос "3peat".

" Пресловутый Б.И.Г. " - это немного странный случай: "Пресловутый БОЛЬШОЙ" и "Пресловутый Б.И.Г." оба работают (я думаю, потому что solr.StandardFilterFactory удаляет точки из аббревиатур?), но «Пресловутый B.I.G» (то есть, минус конечная точка) не делает.

В идеале все разумные варианты этих имен должны работать. Я предполагаю, что ответ как-то связан с solr.WordDelimiterFilterFactory , но я не уверен.

Кроме того, я использую Sunspot с Rails, если это актуально.

1 Ответ

10 голосов
/ 24 мая 2010

Да, вы правы.Вам необходимо правильно настроить WordDelimiterFilterFactory.Попробуйте включить все свойства и не забудьте включить свойство preserveOriginal, которое также сохранит ваши исходные условия.

generateWordparts - будет составлять из БОЛЬШИХ условий - BIG

generateNumberParts - будет составлять из 3Peat условия - 3 Торф

catenateWords - составит от БОЛЬШИХ сроков - БОЛЬШИХ

catenateNumbers - составит от Рэперов 802.11 сроков - Рэпер 80211

catenateAll - составит от Рэпер-802.11 срок - Рэпер80211

splitOnCaseChange - составит из GanGsTa условий - Gan Gs Ta

preserveOriginal - сохранит также исходный срок.Из Rapper-802.11RuuLlZ составит - Rapper-802.11RuuLlZ .

...