Задача: организация хранения и поиск по нечетко струкутированной информации. В общем виде он выглядит так: Код | <record> <leader>00834nw 2200193n 4500</leader> <controlfield tag="001">CF 91000008</controlfield> <controlfield tag="003">DLC</controlfield> <controlfield tag="005">19960528091722.0</controlfield> <controlfield tag="008">910215acaaaaaa</controlfield> <datafield tag="010" ind1=" " ind2=" "> <subfield code="a">CF 91000008</subfield> </datafield> <datafield tag="040" ind1=" " ind2=" "> <subfield code="a">DLC</subfield> <subfield code="c">DLC</subfield> </datafield> <datafield tag="084" ind1="0" ind2=" "> <subfield code="a">lcc</subfield> </datafield> <datafield tag="153" ind1=" " ind2=" "> <subfield code="a">HF1</subfield> <subfield code="c">HF6182</subfield> <subfield code="j">Commerce</subfield> </datafield> <datafield tag="453" ind1="0" ind2=" "> <subfield code="w">j</subfield> <subfield code="a">HT684.22</subfield> <subfield code="h">Communities. Classes. Races</subfield> <subfield code="h">Classes</subfield> <subfield code="h">Classes arising from occupation</subfield> <subfield code="h">Middle class</subfield> <subfield code="j">Commercial</subfield> </datafield> <datafield tag="553" ind1="0" ind2=" "> <subfield code="w">j</subfield> <subfield code="a">HE380.8</subfield> <subfield code="c">HE560</subfield> <subfield code="h">Transportation and communications</subfield> <subfield code="h">Water transportation</subfield> <subfield code="j">Waterways</subfield> <subfield code="t">commerce</subfield> </datafield> <datafield tag="553" ind1="0" ind2=" "> <subfield code="w">l</subfield> <subfield code="a">HE1</subfield> <subfield code="c">HE9900</subfield> <subfield code="j">Transportation and communications</subfield> <subfield code="t">Commerce</subfield> </datafield> <datafield tag="553" ind1="0" ind2=" "> <subfield code="w">l</subfield> <subfield code="a">HE561</subfield> <subfield code="c">HE971</subfield> <subfield code="h">Transportation and communications</subfield> <subfield code="h">Water transportation</subfield> <subfield code="j">Shipping</subfield> <subfield code="t">Commerce</subfield> </datafield> <datafield tag="553" ind1="0" ind2=" "> <subfield code="w">l</subfield> <subfield code="a">GT6010</subfield> <subfield code="c">GT6060</subfield> <subfield code="h">Manners and customs (General)</subfield> <subfield code="h">Customs relative to special classes. By occupation</subfield> <subfield code="j">Commercial occupations</subfield> <subfield code="t">Commerce</subfield> </datafield> <datafield tag="753" ind1=" " ind2=" "> <subfield code="a">Commerce</subfield> </datafield> </record>
|
Т.е. как видно, datafield tag="553" может повторяться сколь угодно. Вопрос, как осуществлять поиск по этому XML в РДБ. Я пробовал хранить 12000 таких записей в MySQL и делать выборку через XPATH, но этот процесс выполнялся около секунды, что совершенно не подходит для задачи. Как можно ускорить обработку XML данных (в различных БД, желательно свободных), какие индексы использовать (можно ли индексировать отдельные ноды?). Заранее благодарю!
|