1) Во первых, мне не очень понятно в каком виде хранить информацию.
На данный момент вижу это таким образом:
каждому набору фильтров для поиска будет соответствовать набор URL:
search_set_id => {URL1, URL2, ..., URLn}
Поскольку одни и те же URL будут повторяться неоднократно среди результатов для разных фильтров, то чтобы не раздувать БД, лучше создать таблицу urls:
id | url
1 | http: //gugu.ru?p=1
2 | http: //gugu.ru?p=2
3 | http: //kuku.ru
4 | http: //mumu.ru
Таким образом, каждому search_set_id будет соответствовать набор id из таблицы urls.
url_results
url_id | search_set_id
1 | 1
2 | 1
3 | 1
2 | 2
3 | 2
Набор характеристик для search_set_id можно хранить как набор id из разных пар ключ-значение (паттерн EAV) или как единый JSON (hstore в СУБД PostgreSQL).
Получив search_set_id можно найти соответствующий ему набор URL.
2) Тут собственно стоит вопрос получения семантики предложения или отдельных слов. Есть ли готовые библиотеки, которые упростят мне жизнь и предоставят что-то уже написанное? Чтобы я только обучил нейросеть и выпустил в работу?
Компьютерная лингвистика - нелёгкая наука. Копай сайт
aot.ru , материалы
Яндекс ШАД а также почитай про их Томита парсер и пр. Чуда ждать не стоит, лучше проконсультироваться с лингвистом.
3) Что выбрать для серверного языка?
Питон хорош тем что легко найти всякие библиотеки и в парсинге также популярен. Лучше бери то что лучше знаешь и на чём легче найти специалистов.
4) Может кто знает какие нибудь книги, статьи - любые источники, где я могу посмотреть что-то на данную тему?
Как вообще гуглить по таким запросам? :) Перед гуглением полезно чётко сформулировать свою задачу и не ставить слишком общие задачи. Про нейронные сети лучше забыть до лучшего понимания задачи.