0

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

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

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

4

1 回答 1

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 个字符)。

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

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

我发现以下页面很有用。

于 2013-09-04T13:36:35.513 回答