Передо мной стоит сложная проблема, и я подумал, что лучше всего попросить совета у сообщества, прежде чем сам составить план атаки.
У меня есть пара тысяч файлов XML, которые мне нужны для поиска в базе данных SQL Server 2008.Файлы XML в настоящее время находятся на диске и не являются частью какого-либо хранилища.Под «доступным для поиска» я имею в виду то, что мне нужно иметь возможность сделать что-то вроде (здесь psuedo-code)
SELECT *
FROM tbl_xmldata
WHERE CONTAINS('xmldata', 'some search word')
tbl_xmldata будет таблицей, в которой хранятся файлы XML, а xmldata будетстолбец с фактическими данными XML.
Последнее требование (и на самом деле это жесткое требование) заключается в том, что при обнаружении попадания (и под «попаданием» я имею в виду, что обнаружен файл XML, содержащий искомый термин), мне нужноиметь доступ к формулировке, которая окружает, где был найден поисковый термин.Например, если бы у меня был файл XML, в котором было следующее:
Мы считаем эти истины самоочевидными, что все люди созданы равными
и я искал слово «само собой разумеющееся», тогда я должен иметь возможность вернуть около 20 символов до и после того, где был найден поисковый термин.Я затронул только этот последний момент, потому что - по моему опыту в любом случае - полнотекстовая индексация SQL Server ограничена тем, что она может только сказать вам, находится ли термин / слово / фраза в определенном документе (при условии, что документ хранится вфайловый поток SQL Server 2008), и он не может сказать вам контекст, в котором находился термин / слово / фраза.
Любая помощь будет принята с благодарностью!Спасибо!