赞
踩
锋哥原创的Springboot+Layui python222网站实战:
MySQL中的全文索引是FULLTEXT类型的索引。
全文索引只能用于InnoDB或MyISAM表,并且只能为CHAR、VARCHAR或TEXT列创建。
MySQL5.7提供了一个内置的全文ngram解析器,支持中文,日文和韩文(CJK),以及一个可安装的MeCab日文全文解析器插件。
FULLTEXT索引定义可以在创建表时在CREATE TABLE语句中给出,也可以稍后使用ALTER TABLE或CREATE INDEX添加。
对于大型数据集,将数据加载到一个没有FULLTEXT索引的表中,然后在此之后创建索引,比将数据加载到一个已有FULLTEXT索引的表中要快得多。
- -- 创建全文索引
- CREATE FULLTEXT INDEX ft_title ON t_article (title) WITH PARSER ngram
mybatis-plus支持实现全文检索
ArticleMapper加个方法:
- /**
- * 根据检索字符串进行全文检索
- * <p>
- * 全文检索包含字段:title
- * </p>
- * @param page
- * @param queryStr
- * @return
- */
- IPage<Article> queryFulltext(Page<Article> page, @Param("queryStr") String queryStr);
ArticleMapper.xml加下方法实现:
- <!-- 全文索引检索 -->
- <select id="queryFulltext" resultType="com.python222.entity.Article">
- select * from t_article
- <where>
- <if test="queryStr != null" >
- and ( MATCH (title) against (#{queryStr}) )
- </if>
- </where>
- order by id desc
- </select>
ArticleService加下:
IPage<Article> queryFulltext(Page<Article> page, @Param("queryStr") String queryStr);
ArticleServiceImpl实现:
- @Autowired
- private ArticleMapper articleMapper;
-
- @Override
- public IPage<Article> queryFulltext(Page<Article> page, String queryStr) {
- return articleMapper.queryFulltext(page,queryStr);
- }
IndexController.java加下:
- /**
- * 根据关键字分词检索
- *
- * @param keyWord
- * @return
- */
- @RequestMapping("/search/{page}")
- public ModelAndView search(String keyWord, @PathVariable(value = "page", required = false) Integer page) {
- ModelAndView mav = new ModelAndView();
- if (StringUtil.isEmpty(keyWord)) {
- return this.index();
- }
- Page<Article> pageArticle = new Page<Article>(page, 10);
- IPage<Article> pageResult = articleService.queryFulltext(pageArticle, keyWord);
- mav.setViewName("search");
- mav.addObject("keyWord", keyWord);
- mav.addObject("articleList", pageResult.getRecords());
- mav.addObject("pageCode", PageUtil.genPagination("/search", pageResult.getTotal(), page, 10, "?keyWord=" + keyWord));
- return mav;
- }

模版search.html:
- <!DOCTYPE html>
- <html xmlns:th="http://www.thymeleaf.org">
- <head>
- <meta charset="UTF-8"/>
- <title th:text="${keyWord}+'-搜索结果页面-'+${application.propertyMap['k1']}"></title>
- <meta name="keywords" th:content="${keyWord}+'-搜索结果页面-'">
- <meta name="description" th:content="${keyWord}+'-搜索结果页面-'">
- <link href="/systemImages/favicon.ico" rel="SHORTCUT ICON">
- <link rel="stylesheet" href="/layui/css/layui.css"/>
- <link rel="stylesheet" href="/css/css.css"/>
- <link rel="stylesheet" type="text/css" href="/css/normalize.css" />
- <link rel="stylesheet" href="/css/font-awesome.min.css">
-
- </head>
- <body>
-
- <div class="header_top" th:include="common/head::#h" />
-
- <div class="header" th:include="common/menu::#m" />
-
- <div class="main_wrapper">
- <div class="w1220 index_content">
- <div class="content_left">
- <div class="search">
- <h4 class="search_title" th:text="'`'+${keyWord}+'` - 搜索结果'"></h4>
- </div>
- <div class="post_list">
- <div class="post_item" th:each="article,status:${articleList}">
- <div class="post_item_text">
- <a class="post_item_title" th:href="'/article/'+${article.id}" target="_blank" th:text="${article.title}"></a>
- <div class="post_item_summary">
- <a th:href="'/article/'+${article.id}" target="_blank"><img class="avatar" th:src="'/randomImages/'+${(status.index)%10+1}+'.png'"/></a>
- <p th:text="${article.summary}"></p>
- </div>
- </div>
- <div class="publishDate" th:text="${#dates.format(article.publishDate, 'yyyy-MM-dd HH:mm:ss')}"></div>
- </div>
- </div>
- <div class="pageCode" th:utext="${pageCode}"></div>
- </div>
-
- <div class="content_right">
- <div class="card">
- <h4 class="card_title">热门帖子推荐</h4>
- <ul class="item_list">
- <li th:each="hotArticle,status:${application.hotArticleList}"><span class="number" th:text="${status.index+1}+'.'"></span><a th:href="'/article/'+${hotArticle.id}" target="_blank" th:title="${hotArticle.title}" th:text="${hotArticle.title}"></a></li>
- </ul>
- </div>
-
- <div class="tag">
- <h4 class="tag_title">热门标签推荐</h4>
- <ul class="item_list">
- <li th:each="tag:${application.tagList}">
- <a th:href="@{'/search/1?keyWord='+${tag.name}}" target="_blank"><button type="button" class="layui-btn layui-btn-sm" th:text="${tag.name}"></button></a>
- </li>
- </ul>
- </div>
- </div>
-
-
-
- </div>
- </div>
-
-
- <div class="footer" th:include="common/footer::#f" />
-
-
- </body>
- </html>

menu.html加下回显。

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。