Поиск совпадений

denisOg

Новичок
Есть массив фраз (pdf, pdf edit, pdf edit form,......) - таксих фраз около 4 млн и есть несколько текстов, около 10 000. Эти данные все время растут.

Нужно посчитать сколько каждая фраза встречается в тексте. Как быстрее это сделать?
Певрное что приходит на ум - искать регуляркой. Но как то долго и ресурсоемко.
Думал запихнуть эти текста в БД и делать поиск по тексту. Но нужно считать сколько раз совпало слово в тексте (а запрос просто выбирет текст)
Может есть сервис/библиотека/софт, который бы делал быстро и качественно эту работу?

Спасибою.
 

denisOg

Новичок
спасибо. но как быть со словосочетаниями?
только одна мысль: разбить тест по словам и при поиске словосочетания(фразы) найти документы по всем словам а потом вторым фильтром сделать уже поиск словосочетаний
хотя у нас 70-80% словосочетаний.....
 

peon

Lok'tar ogar
ключевики хранить как хеш суммы
далее текст разбить на все возможные уникальные словосочетания и их количество в тексте
и получить хеш каждого словосочетания
далее икасть по хешу
 

peon

Lok'tar ogar
WMix, да, это придумали ~полвека/1.5 назад
ну и предложил, раз его смутил inverted index
 

fixxxer

К.О.
Партнер клуба
Инвертированный индекс предполагает хранение позиций (в том или ином виде), где искомое слово встречается в оригинальном тексте. Это позволяет определить расстояние между словами. Дальше через функцию от слов и расстояний определи для себя, что такое "встречается словосочетание".

Еще, конечно, можно просто взять готовую реализацию: sphinx, или elasticsearch, или какую-нибудь там lucene - но, я так понимаю, мы не ищем легких путей ;)
 
Сверху