I have to implement a search feature which is able to quickly perform arbitrary complex queries to XML-data. If the user makes a query, all XML files must be searched to find possible matches. The users will have lots of XML-Files (a few 10000 or more) which are typically a few kilobytes in size. All the XML-files have almost the same structure.
I already benchmarked XPath, it is too slow for my needs.
How can it be done most efficiently? Is is possible to create indexes for the contents of the XML files (preserving content semantics, not just plain fulltext search)?
Will it be useful to put the XML data into an (embedded) SQL database and do the queries with SQL?
What other possibilities do I have?