如何快速实现数据库搜索
千鸟(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 | 算法设计 |