public void DumpAllReferancesToCSV(StreamWriter writer, int numberOfSampleDocs) { Api.JetSetCurrentIndex(session, IndexedDocumentsReferences, "by_key"); Api.JetMove(session, IndexedDocumentsReferences, JET_Move.First, MoveGrbit.None); var keysToRef = new Dictionary <string, DocCountWithSampleDocIds>(); do { var key = Api.RetrieveColumnAsString(session, IndexedDocumentsReferences, tableColumnsCache.IndexedDocumentsReferencesColumns["key"], Encoding.Unicode); DocCountWithSampleDocIds docData; if (keysToRef.TryGetValue(key, out docData) == false) { keysToRef[key] = docData = new DocCountWithSampleDocIds() { Count = 0, SampleDocsIds = new HashSet <string>(StringComparer.OrdinalIgnoreCase) }; } var item = Api.RetrieveColumnAsString(session, IndexedDocumentsReferences, tableColumnsCache.IndexedDocumentsReferencesColumns["ref"], Encoding.Unicode); if (docData.Count < numberOfSampleDocs) { docData.SampleDocsIds.Add(item); } docData.Count++; } while (Api.TryMoveNext(session, IndexedDocumentsReferences)); foreach (var kvp in keysToRef.OrderByDescending(x => x.Value.Count)) { writer.WriteLine("{0},{1},\"{2}\"", kvp.Value.Count, kvp.Key, string.Join(", ", kvp.Value.SampleDocsIds)); } }
public void DumpAllReferancesToCSV(StreamWriter writer, int numberOfSampleDocs) { var documentReferencesByKey = tableStorage.DocumentReferences.GetIndex(Tables.DocumentReferences.Indices.ByKey); using (var docRefIterator = documentReferencesByKey.Iterate(Snapshot, writeBatch.Value)) { if (!docRefIterator.Seek(Slice.BeforeAllKeys)) { // ref table empty return; } var keysToRef = new Dictionary <string, DocCountWithSampleDocIds>(); do { using (var iterator = documentReferencesByKey.MultiRead(Snapshot, (Slice)CreateKey(docRefIterator.CurrentKey))) { if (!iterator.Seek(Slice.BeforeAllKeys)) { break; } do { ushort version; var value = LoadStruct(tableStorage.DocumentReferences, iterator.CurrentKey, writeBatch.Value, out version); if (value == null) { continue; } var currentKeyStr = docRefIterator.CurrentKey.ToString(); DocCountWithSampleDocIds docData; if (keysToRef.TryGetValue(currentKeyStr, out docData) == false) { keysToRef[currentKeyStr] = docData = new DocCountWithSampleDocIds { Count = 0, SampleDocsIds = new HashSet <string>(StringComparer.OrdinalIgnoreCase) }; } if (docData.Count < numberOfSampleDocs) { docData.SampleDocsIds.Add(value.ReadString(DocumentReferencesFields.Reference)); } docData.Count++; } while (iterator.MoveNext()); } } while (docRefIterator.MoveNext()); foreach (var kvp in keysToRef.OrderByDescending(x => x.Value.Count)) { writer.WriteLine("{0},{1},\"{2}\"", kvp.Value.Count, kvp.Key, string.Join(", ", kvp.Value.SampleDocsIds)); } } }
public void DumpAllReferancesToCSV(StreamWriter writer, int numberOfSampleDocs) { Api.JetSetCurrentIndex(session, IndexedDocumentsReferences, "by_key"); Api.JetMove(session, IndexedDocumentsReferences, JET_Move.First, MoveGrbit.None); var keysToRef = new Dictionary<string, DocCountWithSampleDocIds>(); do { var key = Api.RetrieveColumnAsString(session, IndexedDocumentsReferences, tableColumnsCache.IndexedDocumentsReferencesColumns["key"], Encoding.Unicode); DocCountWithSampleDocIds docData; if (keysToRef.TryGetValue(key, out docData) == false) { keysToRef[key] = docData = new DocCountWithSampleDocIds() { Count = 0, SampleDocsIds = new HashSet<string>(StringComparer.OrdinalIgnoreCase) }; } var item = Api.RetrieveColumnAsString(session, IndexedDocumentsReferences, tableColumnsCache.IndexedDocumentsReferencesColumns["ref"], Encoding.Unicode); if (docData.Count < numberOfSampleDocs) docData.SampleDocsIds.Add(item); docData.Count++; } while (Api.TryMoveNext(session, IndexedDocumentsReferences)); foreach (var kvp in keysToRef.OrderByDescending(x=>x.Value.Count)) { writer.WriteLine("{0},{1},\"{2}\"", kvp.Value.Count, kvp.Key, string.Join(", ", kvp.Value.SampleDocsIds)); } }