全文搜索与Python

4 投票
3 回答
3114 浏览
提问于 2025-04-17 12:31

有没有人能帮我推荐一个支持Python的全文搜索引擎?

现在我们有一个MySQL数据库,我想增加一个功能,让它能对数据库中某些表里的文本进行全文搜索。这个文本数据会被一个网页应用用来搜索数据库中的相关记录。例如,可以对我们客户表中的客户姓名信息进行索引,然后通过网页应用进行全文搜索,以获取客户的MySQL记录。

我简单看过Lucene、Swish-E和MongoDB等几个选项,但我不太确定哪个比较适合我,主要考虑以下几点:

  • 我不是Java开发者(虽然我编程已经很久了),
  • 我们只想搜索相对较小的数据集,
  • 我们希望对MySQL数据库中的文本进行索引,
  • 并希望这个索引能够半实时更新。

任何建议、提示或指引都将非常感谢!

3 个回答

0

Solr 是一个很棒的工具,它是对 Lucene 的一个封装,让很多事情变得简单多了。大多数情况下,你不需要动 Java 代码,只需要配置一些 XML 文件就可以了。不过,它是作为一个独立的进程运行的,这可能会让你在部署的时候有点麻烦。

我用 pysolr 得到了很好的效果,但其实你也可以自己写一个 Python 的通信库,因为 Solr 使用的是 REST 接口,这样发送和获取数据(无论是 XML 还是 JSON 格式)都非常简单。

0

几个月前,构建pylucene的过程让我感到非常痛苦。如果一个项目这么难搭建,我觉得它是很难获得关注的。

因为有其他人也有同样的需求,我们开始了一个项目,地址是https://code.google.com/a/apache-extras.org/p/pylucene-extra/,目的是收集在不同操作系统、Python版本和Java运行环境下预先构建好的pylucene和jcc包。不过最近这个项目不是很活跃。

你可以考虑使用Whoosh,或者看看SphinxElasticSearch或者HaystackSearch(注意:我没有参与这些项目的开发)。

另外,你也可以尝试通过Python访问Solr(有一些API可以用),这可能比使用pylucene要简单得多。当然,lucene仍然需要一个JVM来运行。

因为你不需要特别大的扩展性,我建议你关注简单的使用和社区支持,而不是性能和规模。希望这些信息对你有帮助。

4

你可以看看 Whoosh。我听说它在处理大数据量时可能表现不太好(也许现在已经改进了),但对于小规模的数据集合来说,它可能会很有用。

如果你需要一个可以扩展的解决方案,可以考虑使用 Lucene 搭配 PyLucene 或 Jython。

撰写回答