use*_*003 5 mysql full-text-search
我有一个mysql数据库,用户可以在其中输入文本.然后他们需要能够搜索此文本.我刚刚实现了mysql全文搜索,它确实使搜索速度更快.
然而,毫不奇怪,它使插入物变慢.但我对速度慢了很惊讶.单个插入可能需要0.5-1.5秒.
该表有3个索引列:
title (max length 200)
description (max length 3000)
content (max length 10000)
Run Code Online (Sandbox Code Playgroud)
此时我在表中只有大约2000条记录,这与以后的记录相比毫无结果.
有什么建议?这个问题通常如何处理?插入物花费这么长时间是正常的吗?
我不需要全文搜索的所有功能.我真的只需要相当于AND,OR, - ,+,"".所以没有权重等可以转换索引以使其更快?
根据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.
Run Code Online (Sandbox Code Playgroud)