Поиск по XML-файлу с помощью XMLReader
У меня большой XML-файл (около 20 МБ, но предполагается, что он будет расти), и у меня есть форма поиска, где я могу ввести искомое ключевое слово (а). Я пытаюсь использовать DOMXPath::query
чтобы найти то, что мне нужно. Поиск проходит по всем узлам и, если совпадение найдено, возвращается publication
элемент (см. XML ниже). Это работает нормально, но если у меня 10 000 публикаций, поиск длится 4 секунды, что очень медленно (я ожидаю, что у меня будут миллионы публикаций).
XML-файл:
<publication>
<identificators>
<identificator type="isbn">978-1-101-61439-8</identificator>
</identificators>
<title>Secured foreground capacity</title>
<abstract>Illo dignissimos nulla libero ut ut. Inventore voluptas mollitia et officia. In quidem inventore voluptatem quas maxime. Et similique aliquam et sunt nulla.
Quae molestiae dolor architecto dicta non. Quia illo quia tempore architecto pariatur quo commodi cumque. Cumque nemo qui sunt.
Corporis quia reprehenderit modi neque architecto perferendis eligendi. Eveniet nobis illum totam possimus modi assumenda. Quia sed hic sit sequi. Doloremque temporibus eaque velit sed enim.</abstract>
<dates>
<date type="release">18.09.1995</date>
<date type="added">17.07.1991</date>
</dates>
<language>Bajan</language>
<release-number>2</release-number>
<publisher>Kub PLC</publisher>
<filepath/to/file.pdf</file>
<type>Note</type>
<categories>
<category>Health Professions</category>
<category>Computer Science</category>
<category>Agricultural and Biological Sciences</category>
<category>Chemical Engineering</category>
<category>Materials Science</category>
</categories>
<keywords>
<keyword>quia</keyword>
<keyword>placeat</keyword>
</keywords>
<authors>
<main-author>Nannie Klocko</main-author>
<co-authors>
<co-author>Name Surname</co-author>
</co-authors>
</authors>
<affiliation>
<name>Rippin, Stehr and Ryan</name>
<type>Organisation</type>
<address>
<street>Rath Corner</street>
<city>San Nicolás de los Garza</city>
<country/>
</address>
</affiliation>
</publication>
Итак, я прочитал о XMLReader
как быстро это и так далее, но я нашел только примеры, как прочитать весь файл, и мне нужно знать, могу ли я использовать его для ускорения поиска? Если да, можете ли вы привести простой пример?
Вот мой запрос XPath:
$xpath_query = "//publications/publication[contains(translate(., 'ABCDEFGHJIKLMNOPQRSTUVWXYZ', 'abcdefghjiklmnopqrstuvwxyz'), '$search_keyword')]";
Могу ли я использовать что-то подобное с XMLReader? Большое спасибо за каждый намек.