스트리밍 XML 문서를 통한 광범위한 검색을위한 알고리즘/기법에 대한 제안을 찾고 있습니다.XML 스트림을 통한 검색 알고리즘
<foo>
<bar name="aaa" >
<grah name="aab" />
..
</bar>
<bar name="bbb" />
<bar name="ccc" />
<bar name="ddd" />
<bar name="eee" />
... up to 10,000 entries
</foo>
1 단계 요소의 수는 제멋대로입니다. xml의 사용은 또한 제 통제에서 벗어났습니다. 나는 xml을 전처리 할 수 있지만 XML을 색인화 할 수는 있지만 (forseeable future의 경우) 전체 XML 문서를 요청 단위로 메모리에로드 할 수 없다.
현재이 작업을 수행하기 위해 libxml의 스트림 읽기 기능을 사용하여 순차적으로 검색하고 있습니다. RAM/요청의 고정 된 양을 많거나 적게 소비하며 일반적으로 3k 행 미만의 모든 것에 대해 매우 반응적이며 가장 인기있는 결과 캐싱이 도움이되지만 거의 모든 최상위 요소가 특정 단계에서 공격을받습니다.
최근에 우리는 레벨 1 요소가 최대 10,000 개의 요소 크기 였고 끝까지 더 가까운 일치가 서버 응답과 관련하여 용납 될 수없는 많은 수의 큰 파일을 처리해야했습니다.
지금까지 Intoselect와 Quickselect는 검색 공간을 줄이고 합리적인 것으로 보았습니다. 내가 코드를 작성하기 전에 간과 한 다른 아이디어 나 알고리즘이 있는지 알고 싶습니다.