文档搜索引擎模块划分(第一篇)见系列文章:
索引模块程序见下文:
搜索模块程序见下文:
本篇为web模块后端servlet部分。
目录
[5.1 前后端接口约定](#5.1 前后端接口约定)
[5.2 DocSearcherServlet类](#5.2 DocSearcherServlet类)
[5.2.1 配置smart tomcat](#5.2.1 配置smart tomcat)
[5.2.2 配置细节](#5.2.2 配置细节)
5.1 前后端接口约定
约定前后端接口如下:
请求:GET /searcher?query=[查询词] HTTP/1.1
响应: HTTP/1.1 200 OK (body组织为JSON格式)
{ title:"title", url: "url", desc:"desc" }
5.2 DocSearcherServlet类
java
package api;
import com.fasterxml.jackson.databind.ObjectMapper;
import searcher.DocSearcher;
import searcher.Result;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet("/searcher")
// @WebServlet注解用于指定当前路径和哪个servlet对应
public class DocSearcherServlet extends HttpServlet {
// DocSearcher全局唯一,可用static修饰令其变为类的属性而非实例的属性
private static DocSearcher docSearcher = new DocSearcher();
ObjectMapper objectMapper = new ObjectMapper();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1. 解析请求
String query = req.getParameter("query");
if(query == null || query.equals("")){
String Errmsg ="参数非法,未获取到query";
System.out.println(Errmsg);
resp.sendError(404,Errmsg);
return;
}
// 2. 打印记录query值
System.out.println("query = "+query);
// 3. 调用搜索模块进行查询
List<Result> results = docSearcher.search(query);
// 4. 打包搜索结果
resp.setContentType("application/json;charset=utf-8");
objectMapper.writeValue(resp.getWriter(),results);
}
}
5.2.1 配置smart tomcat
配置smart tomcat如下:点击右上角的Edit configuration,点击+号选择Smart Tomcat:

再进行具体配置:

启动tomcat:

日志出现如上输出即为启动成功,根据路径访问:

5.2.2 配置细节
(1)关于日志编码问题,在idea内部Settings处将各种encoding确定为utf-8后,若仍为乱码,还需要检查tomcat的logging.properties文件,路径为:
apache-tomcat-8.5.93路径**\conf\logging.properties**,
将其内部的encoding也修改为utf-8,尤其是:
java
java.util.logging.ConsoleHandler.encoding = UTF-8
(2)关于smart tomcat插件可见下文:
https://blog.csdn.net/m0_63299495/article/details/136259787?spm=1011.2415.3001.5331
https://blog.csdn.net/m0_63299495/article/details/136259787?spm=1011.2415.3001.5331(3)注意Edit Configurations选择的是smart tomcat,而不是tomcat server或tomee server:
