К сожалению, быстрого и простого решения не существует.
Денис прав в том, что синтаксический анализатор распознает его как имя хоста, поэтому он не разбивает его на части.
Есть еще 3 вещи, которые вы можете сделать, с моей головы.
Вы можете отключить разбор хоста в базе данных. Подробности смотрите в документации postgres . Например. что-то вроде ALTER TEXT SEARCH CONFIGURATION your_parser_config
DROP MAPPING FOR url, url_path
Вы можете написать свой собственный словарь.
Вы можете предварительно проанализировать данные, прежде чем они каким-либо образом будут вставлены в базу данных (возможно, разбив все домены перед входом в базу данных).
У меня была похожая проблема с вами в прошлом году, и я выбрал решение (2) выше.
Мое решение состояло в том, чтобы написать собственный словарь, который разделяет слова на несловесные символы. Пользовательский словарь гораздо проще и быстрее написать, чем новый парсер. Вы все еще должны написать C tho :)
Словарь, который я написал, возвратил бы что-то вроде 'www.facebook.com':4, 'com':3, 'facebook':2, 'www':1'
для домена «www.facebook.com» (у нас был сценарий уникальности, следовательно, 4 результата вместо 3).
Проблема с пользовательским словарем заключается в том, что вы больше не будете получать слова (например, www.books.com выйдет как www, books и com). Я полагаю, что есть некоторая работа (которая, возможно, была завершена), позволяющая создавать цепочки словарей, которые могли бы решить эту проблему.