做基本搜索的推荐方法

2024-04-25 13:21:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要搜索一段视频的标题。搜索将只在一个表的一列中搜索,因此这是一个非常基本的搜索。以下是我目前用于搜索的内容:

video_set = video_set.filter(title__icontains=search)

使用print connection.queries,它变成了——

SELECT COUNT(*) FROM `userprofile_videoinfo` WHERE `userprofile_videoinfo`.`title` LIKE %search% 

我对搜索和SQL非常陌生,似乎总是不鼓励使用“%like%”。我正在搜索大约10000条记录,想知道这个搜索是否适合这么小的记录大小,或者我是否需要寻找其他的搜索选项。如果10000条记录太小而无法产生影响,那么我需要在多大/什么时候考虑其他选择?对于更高性能的基本文本搜索,我可以选择哪些选项?非常感谢。你知道吗


Tags: 标题内容search视频titlevideo选项记录
3条回答

如果mysql的全文搜索功能不足以满足您的需要。看看Apache Solrhttp://lucene.apache.org/solr/或pylucene。它们将为全文搜索提供更好的结果。你知道吗

人们告诉你避免像“%blah%”这样做的原因是,在进行这种搜索时很难使用索引。这意味着,如果没有任何其他筛选器,它将必须执行一次完整的表扫描,并检查每条记录是否与查询匹配,而不是使用索引。有一万张唱片,不会有太大的业绩冲击。如果你有10倍或100倍那么多的行,那么你会开始注意到慢下来。全文搜索似乎超过了10000行。不过,还有其他一些问题需要考虑,比如大写字母和前声功能,您可能需要研究一下(因为人们经常拼错单词:)

假设使用MyISAM表,研究在数据库中设置full-text search,并使用MATCH()函数进行搜索。你知道吗

相关问题 更多 >