Java课程设计
1. 题目及要求
基于学校的搜索引擎
负责部分:Java GUI设计
2.界面调查
1)调查界面:百度
2)思考:
根据我的调查,我认为我需要完成三个界面的设计:
第一个是调查主界面,里面有一个集美大学的logo,一个搜索框用文本字段,因为需要在里面写入搜索内容,一个搜索按钮用button,这个按钮完成的功能就是输入搜索内容后,点击搜索按钮,可以跳转到下一个界面,并且返回结果。
第二个界面是搜索结果界面:需要的是一个再次搜索框,用文本字段;一个再次搜索按钮,用button;一个面板JPanel,用来盛放我搜索到的结果;在界面的最底下还有三个按钮,一个文本框,分别是:上一页,下一页,跳转,和相应页面表示,当数据量过大需要分页时,就是用来实现页面的跳转的。
第三个就是结果展示界面:一个jLabel,展示标题;一个文本区域展示内容;一个按钮,点击能够跳转到原网页浏览。
3.我的代码
1.EsGuiSearch.java
package edu.net.itsearch.gui;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import crawler.SearchResultEntry;
import edu.net.itsearch.elasticsearch.EsClient;
import io.searchbox.client.JestClient;
import io.searchbox.core.Search;
import io.searchbox.core.SearchResult;
/**
*
* @author xingkyh
*/
public class EsGuiSearch {
private JestClient jestClient;
public EsGuiSearch() {
this.jestClient=EsClient.getJestClient();
}
/**
* 全文检索
*
* @param queryString 搜索字符串
* @return 检索结果
*/
public List fullTextSerch(String queryString) {
// 声明一个搜索请求体
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.must(QueryBuilders.queryStringQuery(queryString));
searchSourceBuilder.query(boolQueryBuilder);
// 设置分页
searchSourceBuilder.from(0);
searchSourceBuilder.size(800);
// 构建Search对象
Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(EsClient.indexName)
.addType(EsClient.typeName).build();
SearchResult searchResult = null;
try {
searchResult = jestClient.execute(search);
} catch (IOException e) {
e.printStackTrace();
}
List list=new ArrayList();
List> hits = searchResult.getHits(SearchResultEntry.class);
for (SearchResult.Hit hit : hits) {
list.add(hit.source);
}
return list;
}
public void close() throws IOException {
EsClient.closeJestClient();
}
}
2.SearchMainPage.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package edu.net.itsearch.gui;
import java.util.List;
import javax.swing.JOptionPane;
import crawler.SearchResultEntry;
/**
*
* @author 格格
*/
public class SearchMainPage extends javax.swing.JFrame {
/**
* Creates new form searchMainPage
*/
public SearchMainPage() {
initComponents();
esGuiSearch=new EsGuiSearch();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
private void initComponents() {
searchBox = new javax.swing.JTextField();
searchButton = new javax.swing.JButton();
picture = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
searchButton.setText("搜索");
searchButton.addActionListener(new j