Mysql 基于搜索的查询优化

Mysql 基于搜索的查询优化,mysql,sql,search,query-optimization,database-optimization,Mysql,Sql,Search,Query Optimization,Database Optimization,我正在尝试创建一个搜索查询,用于开发一个学校图书馆,该图书馆将以较低的成本从数据库中检索数据。我的表格中有电话号码、作者、标题和年份。我想从电话号码、作者和标题中搜索 $sqlCommand = "SELECT book_id, author, title FROM book WHERE MATCH(callNumber, author, title) AGAINST('$search' IN BOO

我正在尝试创建一个搜索查询,用于开发一个学校图书馆,该图书馆将以较低的成本从数据库中检索数据。我的表格中有电话号码、作者、标题和年份。我想从电话号码、作者和标题中搜索

$sqlCommand = "SELECT book_id, author, title 
               FROM book 
               WHERE MATCH(callNumber, author, title) 
               AGAINST('$search' IN BOOLEAN MODE)";
我使用了上面的查询,返回的数据不可靠。优化此查询的任何建议或建议。感谢

默认情况下,根据查询的
匹配(…)结果按相关性顺序列出

要列出匹配项的相关性,请尝试以下SQL:

SELECT book_id, author, title, MATCH(callNumber, author, title) 
               AGAINST('$search' IN BOOLEAN MODE) as relevance
               FROM book 
               WHERE MATCH(callNumber, author, title) 
               AGAINST('$search' IN BOOLEAN MODE)
如果相关数字不是你所期望的,你应该考虑你的测试数据是否是相关的。这里有一些警告,比如:

  • 短词被忽略(我认为截止值为4个字符)

  • 某些单词被忽略(后面、其他等)

  • 忽略常用词(至少在一半记录中出现)


我发现很有用。

您是否创建了适当的索引?什么是“不可靠”?你是说你得到了错误的结果?标题暗示问题在于性能。我得到了正确的结果,但当我试图查看它时,结果的第一行中没有。