如何使用Python和MySQL实现搜索引擎?

0 投票
3 回答
5815 浏览
提问于 2025-04-16 20:07

我有一个用自定义Python脚本创建的MySQL数据库。我需要在数据库中的一个表上实现全文搜索。我可以使用 SELECT * FROM myTable WHERE (title LIKE '%hello%' OR title LIKE '%world%') 这样的查询,不过我觉得这种搜索方式效率不高,因为这个表里大约有一百万行数据。

我使用的是innoDB表,所以MyISAM的内置全文搜索功能不能用。有没有什么方法或教程可以给我一些建议,让我找到正确的方向?

3 个回答

0

我对MySQL不是很专业,但我可以直接告诉你,不应该随便选择所有和某个值相似的东西。如果用户输入“and”,而结果有成千上万条,可能更好的做法是先从数据库中选择一定数量的结果,然后当用户翻到下一页时,再用LIMIT参数加载更多结果。

SELECT * FROM `myTable` WHERE (`title` LIKE '%hello%' OR `title` LIKE '%world%') LIMIT numberOfValues,startingAtRowNumber

所以,针对你的问题,这个查询效率不高,你应该使用我上面提到的那种方法。

0

看看这个链接:使用InnoDB进行全文搜索。他们建议使用外部搜索引擎,因为在InnoDB表中没有特别好的搜索选项。

4

如果你的数据是一些内容,比如文章或者文本,你可以使用一些专门的全文搜索引擎,比如Lucene:

http://lucene.apache.org/pylucene/

如果你在使用Django框架的话,可以试试Haystack:

http://haystacksearch.org/

Solr也是一种和全文搜索相关的技术,你可以了解一下:

http://wiki.apache.org/solr/SolPython

撰写回答