MySQL全文搜索:需要快速插入和快速搜索

时间:2013-07-27 09:17:18

标签: mysql full-text-search

我有一个mysql数据库,用户可以在其中输入文本。然后他们需要能够搜索此文本。我刚刚实现了mysql全文搜索,它确实使搜索速度更快。

然而,毫不奇怪,它使插入更慢。但我对速度慢了很惊讶。单个插入可能需要0.5到1.5秒。

该表有3个索引列:

title (max length 200)
description (max length 3000)
content  (max length 10000)

此时我在表格中只有大约2000条记录,这与以后的记录相比毫无结果。

有什么建议吗?这个问题通常如何处理?插件花费这么长时间是正常的吗?

我不需要全文搜索的所有功能。我真的只需要相当于AND,OR, - ,+,“”。所以没有权重等。可以转换索引以使其更快吗?

1 个答案:

答案 0 :(得分:2)

根据eggyal的评论回答。

我最终安装 Sphinx 。这很棒。我正在使用它的实时索引。快速搜索和快速插入。比mysql自由文本插入/搜索方式更快。当然,我的数据库非常小。它们具有使用大型数据库进行快速实时索引的技巧(分为2个索引,一个包含旧数据,一个包含较新数据),但我并不需要。

顺便说一句:我正在使用Python / Django,除了sphinx之外,不需要安装任何api或库:

import MySQLdb
connection = MySQLdb.connect(host='127.0.0.1', port = 9306) 
cursor = connection.cursor()
cursor.execute("select id from my_index where match('stackoverflow')")
results = cursor.fetchall()
# I use my regular connection to insert the IDs into a table in my regular database and then join with that to get actual data.