Итак, ваши два вопроса: 1) Есть ли уже решение, которое будет делать то, что вы хотите, и 2) Если вы используете алгоритм Aho-Corasick.
Первый ответ: я сомневаюсь, что вынайти готовый инструмент, который будет соответствовать вашим потребностям.Второй ответ заключается в том, что, поскольку вы не заботитесь о производительности и имеете ограниченный опыт работы с CS, вам следует использовать любой алгоритм, который вы считаете наиболее простым для реализации.
Я сделаю еще один шаг и предложу архитектуру.
Во-первых, у вас должна быть возможность анализировать файлы .sql осмысленным образом, проходя построчно и возвращая имя таблицы, имя столбца и значение.Для этого, вероятно, лучше всего подойдет StreamReader.
Во-вторых, вам нужен анализатор для ваших веб-страниц, который будет поэлементно переходить по элементам и возвращать каждый текстовый узел и имя каждого родительского элемента вплоть до HTML.элемент и его родительское имя файла.XmlTextReader или подобный анализатор потокового XML, такой как SAXON, вероятно, лучше всего подходит, если он будет работать с недопустимым XML.
Вам необходимо связать эти два синтаксических анализатора вместе с каким-то алгоритмом взаимного поиска,Вам придется настроить его в соответствии с вашими потребностями.Aho-Corasick, очевидно, даст вам лучшую производительность, если вы сможете справиться с этим.Наивный алгоритм прост в реализации, и вот как это делается:
Предполагая, что у вас есть два анализатора, которые перебирают каждое поле (с одной стороны) и каждый текстовый узел (с другой стороны), выберите одиниз двух синтаксических анализаторов, и он должен пройти через все строки в своем источнике данных, вызывая другой анализатор для поиска во всех возможных источниках других источников данных и регистрируя те, которые он находит.