有许多不同的开源文档搜索引擎,它们正是为您想要做的事情而设计的。Solr、Elastic Search、Xapian、Whoosh、Haystack(为 Django 制作)等。SO 和其他地方还有其他帖子介绍了使用一对一的好处,但是您的要求很简单,以至于其中任何一个都非常好(并且如果您的项目起飞,很容易以最小的努力进行扩展,这是总是很高兴知道)。所以看看他们的例子,看看哪个对你来说最直观——Solr 可以说是最受欢迎的,也是我唯一使用过的,但是 Elastic Search 使用相同的流行 Lucene 后端,显然更容易上手和运行,所以我会从那里开始。
至于实际的实现,如果您想要返回单个经文(或只是经文编号),您将希望将每个经文索引为单独的“文档”。搜索引擎根据相关性处理结果的排名(如果您感兴趣,通常使用 tf/idf 算法)。
我处理斜体和红色文本的方法是在文本中包含某种标记(即,用单星号表示斜体,用双星号表示红色),然后告诉分析器忽略这些字符 - 可能有但是,您最终选择的框架中的一种更简单的方法,因此请谨慎对待。跨越多节经文的查询要求更复杂,但答案可能涉及将每一整章索引为一个文档,而不是(或者可能除了?我必须更多地考虑它)每节经文。
请注意 - 如果您不熟悉搜索索引,即使是像 Elastic Search 这样设计为即插即用的东西也可能仍然需要一些时间和精力来设置,所以如果您绝对需要为了让它快速启动并运行,并且您已经熟悉 MySQL,我想它可以工作(它确实可以进行全文搜索)。但它肯定不是最适合这项工作的工具,所以如果这是你投资的一个项目,如果你花一点时间学习这些搜索框架之一,你稍后会感谢自己。正如其他人所指出的那样,就您要处理的文本数量而言,这可能是矫枉过正,但是在您如何搜索似乎是您想要的文本时,它将非常灵活。例如,稍后添加其他要求将非常简单(例如,您可以让人们将他们的搜索限制为仅匹配红色文本中的匹配项)。