искать документ - PullRequest
       23

искать документ

0 голосов
/ 27 августа 2011

В настоящее время я работаю над проектом, в котором мне нужно искать фразы и слова в текстовом документе с помощью кода.

В основном документ Word будет загружен, а затем найдены некоторые слова.Какой самый эффективный способ сделать это?

Редактировать: Меня больше интересует, что использовать для чтения документа (т. Е. MS Interop лучший способ?)затем, если было бы очень выгодно проиндексировать его перед поиском (если так, как?)

Ответы [ 3 ]

0 голосов
/ 29 августа 2011

Regex - это хороший способ найти шаблоны. Вы можете найти информацию о том же здесь:

REGEX

0 голосов
/ 29 августа 2011

По сути, вы бы использовали бесплатную библиотеку от MS под названием OpenXML SDK 2, чтобы открыть документ Word (работает с Word 2007 и более поздних версий) ... эта библиотека работает без необходимости установки слова ... .и затем вы можете извлечь текст и искать его как угодно - например, с помощью System.Text.RegularExpressions.Regex ...

Когда вы извлекаете текст, вы можете индексировать его, сохраняя все слова / фразы с контекстной информацией (положения и т. Д.) В БД, поэтому вам нужно будет SELECT из БД только тогда, когда пользователь дает вам фразу для поиска - дизайн индекса зависит от вас - вам понадобится поиск без учета регистра? и т.д.

Другим вариантом будет использование Solr / Lucene для индексации и доступа к этому индексу через API, чтобы предоставить пользовательский интерфейс для поиска ...

0 голосов
/ 27 августа 2011

Открыть текстовый документ в C #

После этого нужно просто использовать метод Contains или что-то в этом роде.Это действительно не так сложно.Возможно, вы захотите посмотреть регистры с заглавными и строчными буквами.

И просто сделайте что-то вроде этого: (псевдокод)

string[] stuffToFind = new string[] {"Google", "is your best friend"};

for (int i = 0; i < stuffToFind.Length; i++;)
{
    for (int j = 0; j < document.Length; j++)
    {
        if(document[j].Contains(stuffToFind[i]))
            Console.Writeline("Yeay, we found something");
    }
}

Мне не очень нравится это решение.Это также отчасти зависит от того, как выглядит объект word document.

...