搜索查询优化

时间:2013-08-30 23:51:40

标签: mysql sql search query-optimization database-optimization

我正在尝试创建一个搜索查询来开发一个学校图书馆,该图书馆将以低成本从数据库中检索数据。我的表内有 callNumber,作者,标题。我想从callNumber,作者和标题中搜索。

$sqlCommand = "SELECT book_id, author, title 
               FROM book 
               WHERE MATCH(callNumber, author, title) 
               AGAINST('$search' IN BOOLEAN MODE)";

我使用了上面的查询,返回数据不可靠。无论如何,优化此查询的任何建议或建议。谢谢

1 个答案:

答案 0 :(得分:0)

默认情况下,MATCH(...) AGAINST个查询的结果按相关性顺序列出。

要列出匹配项的相关性,请尝试以下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个字符)。

  • 某些单词被忽略(之后,其他等)。

  • 忽略常用词(至少有一半记录)

我发现the following page很有用。