2009-12-19 5 views
0

Мне нужно внедрить поисковую систему. Поэтому у меня есть словарь, который является хеш-таблицей, и он состоит из слов. Кроме того, у меня есть некоторые тексты, мне нужно перебирать все тексты и помещать в файл публикации текстовый номер и место каждого слова в текстах.Обновление файла публикации с новыми данными в C#

Поэтому каждый раз, когда у меня есть какое-то слово, и это слово уже существует в файле проводки, мне нужно добавить другое вхождение этого слова, то есть обновить эту строку, где это слово находится в файле проводки. Но так как файл проводки выглядит примерно так:

word1: 1(2,4,5) 4(66,42,21) 
word2: 1(3,66) 6(12,19) 

Я не могу написать что-то новое в строке 1, потому что будет влиять на линии 2, как я понимаю.

Итак, вопрос в том, как я могу это сделать? Могу ли я каким-то образом вместо того, чтобы просто писать строки в файл, написать некоторую структуру данных? как хэш-таблица? поэтому для каждого слова в файле проводки будет хеш-таблица, и если я увижу, что слово уже существует в файле проводки, я прочитаю его хэш-таблицу, обновит ее и переписал в файл.

Или есть что-то лучше?

Спасибо заранее,

Грег

+0

Можете ли вы упростить свой вопрос и сделать его более прямым? Это немного расплывчато для меня. Например: «У меня есть 5 ТБ текстовых файлов на диске, и мне нужно иметь возможность искать их в течение <1 секунды. У меня есть xyz до сих пор. Куда мне идти дальше?» –

+0

Для упрощения: У меня есть текстовый файл с данными на словах: word1: данные данные данные WORD2: данные данные данные данные word3: данные данные .. Я знаю слово, что я должен добавить некоторые данные в нем так Я хочу перейти к этому конкретному месту в файле и добавить данные (без удаления данных из следующего слова по ошибке) Например, я хочу добавить новые данные в word2. Как мне это сделать? – 2009-12-19 09:40:14

ответ

0

Вы думали об использовании XML, чтобы сделать это? Простая структура, как:

<searchkeys> 
    <key name="word1"> 
     <text id="1">2,4,5</text> 
     <text id="4">66,42,21</text> 
    </key> 
    <key name="word2"> 
     <text id="1">3,66</text> 
     <text id="6">12,19</text> 
    </key> 
</searchkeys> 

Вы можете использовать XmlDocument, XmlReader, XmlWriter и т.д. классы для манипулирования файлами и получить новые идеи оттуда.

Если это будет содержать много данных, вы можете использовать БД для этого (Access, MS SQL (Express или Standard), SqlLite, MySql и т. Д.).

+0

Итак, вы предлагаете вместо написания простого текста в файл записать его как XML-документ? Если мне захочется добавить некоторые новые данные в word1, как я смогу сделать это с помощью XML-документа? – 2009-12-19 09:41:29

+0

Вы можете сделать это двумя способами легко (есть больше, я уверен). Один загружает весь файл в память, обновляет (и сохраняет постоянство для вашего приложения), а затем записывает его снова. Или два используют XpathNodeNavigator, чтобы найти интересующий вас узел и обновить его, а затем вызвать сохранение в Xml, чтобы сохранить его снова. Должны быть примеры этого легко доступны, так как это обычный сценарий использования. – GrayWizardx