我正在尝试创建一个搜索查询来开发一个学校图书馆,该图书馆将以低成本从数据库中检索数据。我的表内有 callNumber,作者,标题和年。我想从callNumber,作者和标题中搜索。
$sqlCommand = "SELECT book_id, author, title
FROM book
WHERE MATCH(callNumber, author, title)
AGAINST('$search' IN BOOLEAN MODE)";
我使用了上面的查询,返回数据不可靠。无论如何,优化此查询的任何建议或建议。谢谢
答案 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很有用。