千鸟(Q3):我有一个问题想问问,现在在做一个与图书有关的项目,其中有一个功能是按图书书名搜索相似图书列表,问题不难,但是想优化一下,有如下问题想请教一下:  
1、在图书数据库数据表的书名字段里,按图书书名进行关键字搜索,如何快速搜索相关的图书? 现在由于数据不多,直接用的like模糊查找验证功能而已;  
2、如何按匹配的关键度进行快速排序?比如搜索“算法”,有一本书是《算法》,另一本书是《算法设计》,要求前者排在更前面。现在的排序是根据数据表中的主键序号id进行的排序,没有达到想要的效果。 谢谢了~~~~ ^_^
玄惭(A3): 1、如果数据量不大,是可以在数据库中完成搜索的,可以在搜索字段上创建索引,然后进行搜索查询:  
CREATE TABLE `book` (  
  `book_id` int(11) NOT NULL AUTO_INCREMENT,  
  `book_name` varchar(100) NOT NULL,  
  ………………………..  
  PRIMARY KEY (`book_id`),  
  KEY `ind_name` (`book_name`)  
) ENGINE=InnoDB  
select book.*  from book , (select book_id from book where book_name like ‘%算法%’)  book_search_id  where book.book_id=book_search_id.book_id;  
但是当数据量变得很大后,就不在适合了,可以采用阿里云的搜索技术OpenSearch;  

2、root@127.0.0.1 : test 15:57:12> select book_id,book_name from book_search where book_name like ‘%算%’ order by book_name;  
+———+————–+  
| book_id | book_name    |  
+———+————–+  
|       2 | 算法       |  
|       1 | 算法设计 |

发表评论

电子邮件地址不会被公开。 必填项已用*标注