だから私は巨大な XML ファイル (ウィキペディア ダンプ xml) を持っています。
私の学校のプロジェクトの要件では、この xml ファイルを非常に高速に検索できる必要があるとされています (いいえ、SQL データベースにインポートしないでください)。
もちろん、別のファイル (おそらく xml ) に表示されるインデクサーを作成したいと思います: [検索するコンテンツ]:[コンテンツを含む xml ノードの開始位置までのバイト オフセット]
私の質問は、要素の位置を取得する方法と、検索に必要な場合に xml 内のその位置にジャンプする方法です。
プロジェクトは C# です。前もって感謝します。
後で編集: XmlReader を使用しようとしていますが、他の提案は受け付けています。
今のところ、これはインデックスなしの検索で XML を読み取る方法です
XmlReader reader = XmlReader.Create(FileName);
while (reader.Read())
{
switch (reader.Name)
{
case "page":
Boolean found = false;
String title = "";
String element = "<details>";
readMore(reader, "title");
title = reader.Value;
if (title.Contains(word))
{
found = true;
}
readMore(reader, "text");
String content = reader.Value;
if (content.Contains(word) & !found)
{
found = true;
}
if (found)
{
element += "<summary>" + title + " (click)</summary>";
element += content;
element += "</details>";
result.Add(element);
}
break;
}
}
reader.Close();
if (result.Count == 0)
{
result.Add("No results were found");
}
return result;
…
static void readMore(XmlReader reader, String name)
{
while (reader.Name != name)
{
reader.Read();
}
reader.Read();
}