C# 如何以编程方式在书中搜索单词?

C# 如何以编程方式在书中搜索单词?,c#,.net,vb.net,text-search,C#,.net,Vb.net,Text Search,我需要开发一个应用程序,可以搜索一本书,列出所有的网页和行,其中包含一个给定的关键字 以其他方式拆分的书籍,如按章节拆分的圣经;他们将能够搜索包含某个关键字的所有诗句。或者,在某些章节和诗句中搜索关键字 我应该以什么格式存储这本书?是否应将其存储到SQL数据库中 什么样的格式最容易搜索,而不是最容易存储?几年前,Access数据库中已经存储了一本圣经,我用它来制作一个与您所说的完全相同的应用程序。Access DB是免费下载的。几年前,我在XML中遇到了一个。我无法从工作中完成,但我建议您搜索A

我需要开发一个应用程序,可以搜索一本书,列出所有的网页和行,其中包含一个给定的关键字

以其他方式拆分的书籍,如按章节拆分的圣经;他们将能够搜索包含某个关键字的所有诗句。或者,在某些章节和诗句中搜索关键字

我应该以什么格式存储这本书?是否应将其存储到SQL数据库中


什么样的格式最容易搜索,而不是最容易存储?

几年前,Access数据库中已经存储了一本圣经,我用它来制作一个与您所说的完全相同的应用程序。Access DB是免费下载的。几年前,我在XML中遇到了一个。我无法从工作中完成,但我建议您搜索Access Bible或XML Bible,看看是否可以找到它。(我认为最初的访问可能被称为ASP圣经)。无论如何,如果你能找到它,它应该会让你对如何构建数据库有一个很好的了解。

几年前,你是一本圣经,已经存储在Access数据库中,我用它来制作一个与你所说的一模一样的应用程序。Access DB是免费下载的。几年前,我在XML中遇到了一个。我无法从工作中完成,但我建议您搜索Access Bible或XML Bible,看看是否可以找到它。(我认为最初的访问可能被称为ASP圣经)。无论如何,如果你能找到它,它应该能让你很好地了解如何构建数据库。

这个程序应该搜索任何一本书还是只搜索一本特定的书?《圣经》以外的书籍没有像《圣经》那样将内容分成章节和诗句。答案将取决于该书当前的格式。

该程序应该搜索任何一本书还是只搜索一本特定的书?《圣经》以外的书籍没有像《圣经》那样将内容分成章节和诗句。答案将取决于这本书目前的格式。

我建议使用现成的全文引擎,如。如果你自己动手,你将获得各种各样的功能。

我建议使用现成的全文引擎,比如。你会得到各种各样的功能,如果你自己做的话,你不会得到这些功能

def findWord(keyword):
    f = open("book.txt")
    for line in f:  # horribly bad performance for a large block of text
        if line.find(keyword) > -1:
            print line
将每一行替换为特定圣经示例的文本块。如何存储文本实际上是无关紧要的。你所要做的就是搜索一些给定的文本(很可能是在一个循环中),寻找一个关键字

如果要搜索行号和其他任意字段,最好将信息与相关字段一起存储在数据库中,并在任何相关字段上运行搜索

仅供参考-上面的代码是Python

将每一行替换为特定圣经示例的文本块。如何存储文本实际上是无关紧要的。你所要做的就是搜索一些给定的文本(很可能是在一个循环中),寻找一个关键字

如果要搜索行号和其他任意字段,最好将信息与相关字段一起存储在数据库中,并在任何相关字段上运行搜索


仅供参考-上面的代码是Python。

这取决于您希望在其上运行它的环境,以及您希望每秒执行多少查询

最快的方法是将哈希表中的每个单词存储到内存中,并且这些值包含对章节/韵文的引用,或者您要检索的任何名称

但是,如果书籍非常大,或者客户机非常薄,这可能无法很好地扩展

您可以将每一节诗句存储在数据库记录中,并使用全文搜索进行搜索。但如果你需要在网站上托管应用程序,你需要确保你选择的数据库的托管成本不超过你的预算

如果您的应用程序负载可以处理它,您还可以将每一节存储在文本文件(纯文本、XML或任何其他格式)中,并扫描每个文件,最好使用XPATH或正则表达式。这是一个非常便宜且简单的解决方案,您可以随心所欲地进行升级,但速度可能较慢。那么,如果您每小时只需要服务一个请求,为什么不呢


我会将数据库与全文搜索结合使用,因为它的伸缩性最好。

这取决于您想要运行它的环境,以及您期望每秒有多少查询

最快的方法是将哈希表中的每个单词存储到内存中,并且这些值包含对章节/韵文的引用,或者您要检索的任何名称

但是,如果书籍非常大,或者客户机非常薄,这可能无法很好地扩展

您可以将每一节诗句存储在数据库记录中,并使用全文搜索进行搜索。但如果你需要在网站上托管应用程序,你需要确保你选择的数据库的托管成本不超过你的预算

如果您的应用程序负载可以处理它,您还可以将每一节存储在文本文件(纯文本、XML或任何其他格式)中,并扫描每个文件,最好使用XPATH或正则表达式。这是一个非常便宜且简单的解决方案,您可以随心所欲地进行升级,但速度可能较慢。那么,如果您每小时只需要服务一个请求,为什么不呢


我会将数据库与全文搜索结合使用,因为它的规模最大。

您希望对同一本书进行多个查询吗?i、 e.您是否希望对每本书进行预处理,这可能需要很多时间,但每本书只需进行一次预处理?否则,boyer-moore可能是最好的选择。 您是只想搜索完整的单词,还是还要搜索单词的开头?对于完整的单词,一个简单的哈希表可能是最快的。如果你想查找单词的某些部分,我建议使用后缀树

当你知道你在使用什么算法时,决定最好的数据结构(databa