1.设计页面
- searchAppWords.html(用的是freemark模板引擎只不过后缀被我改成.html形式的这样方面看html代码)
- jQuery 和 BootStrap 引用的都是cdn资源 layer 需要下载下来放在resources静态资源下面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<base href="${request.contextPath}/">
<title>ES分词搜索</title>
<link rel="stylesheet" href="http://cdn.bootcss.com/twitter-bootstrap/3.0.1/css/bootstrap.min.css">
<link rel="stylesheet" href="http://cdn.bootcss.com/twitter-bootstrap/3.0.1/css/bootstrap-theme.min.css">
</head>
<body class="bs-docs-home">
<div class="container theme-showcase">
<h1 style=" line-height:2em;"> </h1><br />
<div class="row">
<div class="col-sm-3"></div>
<div class="col-sm-12">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><strong>内容搜索</strong></h3>
</div>
<div class="panel-body">
<form role="form" name="form1" id="from1">
<div class="form-group">
<label for="IDCard">请输入您的词条</label>
<div class="input-group">
<input type="text" class="form-control" id="word" name="word" placeholder="词条" value="李">
<span class="input-group-btn">
<button class="btn btn-default" type="button" onClick="Es.submit(null);" >查询</button>
</span>
</div>
</div>
<div class="form-group">
<label for="Subject">请选择需要搜索的分类</label>
<div class="input-group">
<input type="text" class="form-control" id="type" name="type" placeholder="请选择分类" value="政策法规" readonly="readonly">
<div class="input-group-btn">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">分类 <span class="caret"></span></button>
<ul class="dropdown-menu pull-right">
<li><a href="javascript:void(0);" onClick="$('#type').val('政策法规');">政策法规</a></li>
<li><a href="javascript:void(0);" onClick="$('#type').val('诗词');">诗词</a></li>
</ul>
</div>
</div>
</div>
</form>
<div class="table-responsive">
<table border="0" cellspacing="0" cellpadding="0" class="table">
<tr class=" label-info">
<th scope="col" width="50%" colspan="1" ><span style="color:white">标题</span></th>
<th scope="col" colspan="1" ><span style="color:white">内容</span></th>
</tr>
</table>
</div>
</div>
</div>
</div>
<div class="col-sm-3"></div>
</div>
<div class="form-inline text-right">
<a class="btn btn-link " href="javascript:Es.submit('up');" id="up" role="button">上页</a>
<a class="btn btn-link " href="javascript:Es.submit('next');" id="next" role="button">下页</a>
<div class="form-group text-right">
<div class="active" id="time">耗时:0/ms</div>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="http://cdn.bootcss.com/twitter-bootstrap/3.0.1/js/bootstrap.min.js"></script>
<script src="resources/lib/layer-v3.1.1/layer/layer.js"></script>
</body>
<script type="text/javascript">
var param={
page:0,
pageSize:1,
};
var config={
zcfgUrl:'http://59.203.15.62:1024/zcfg/',
baidu:'http://www.baidu.com/s?wd=',
type:null,
};
Es = {
send:function(config){
$('.tr').remove();
layer.load();
$.ajax({
type: 'POST',
url: 'es/queryHighlight',
data: param,
success: function(d){
console.log("返回数据",d);
console.log('当前页:'+page);
layer.closeAll();
var page=param.page;
var data=d.data;
var time=d.time;
if(data.length>0){
$('#next').attr('href','javascript:Es.submit("next");');
console.log('下次传入参数:',param);
var html='';
$.each(data, function(i, n){
html +='<tr class="active tr">';
html +=' <td><pre>'+(data[i].fileName==undefined?data[i].title:data[i].fileName)+'</pre></td>';
if(data[i].mainContent!=undefined){
var url=config.zcfgUrl;
var title=data[i].fileName;
var reg=/<[^<>]+>/g;
title=title.replace(reg,'');
title=title.substring(0,title.indexOf('.'))+'.htm';
url+=title;
html +=' <td><a href="'+url+'" target="_blank"><pre>'+data[i].mainContent+'</pre></a></td>';
}else{
var url=config.baidu;
var title=data[i].title;
var reg=/<[^<>]+>/g;
title=title.replace(reg,'');
url+=title;
html +=' <td><a href="'+url+'" target="_blank"><pre>'+data[i].content+'</pre></a></td>';
}
html +='</tr>'
});
$('.table').append(html);
}else{
html +='<tr class="warning tr" colspan="2">';
html +='<td colspan="2" class="text-center">没有检索到数据</td>';
html +='</tr>';
$('.table').append(html)
$('#next').attr('href','javascript:void(0);');
}
$('#time').html('耗时:'+time+'/ms');
if(time<=50){
$('#time').attr({'class':'text-success'});
}else if(time>50 && time<=60){
$('#time').attr({'class':'text-warning'});
}else{
$('#time').attr({'class':'text-danger'});
}
}
});
},
submit:function(type){
console.log(param);
config.type=type;
var type=$('#type').val();
param.word=$('#word').val();
if(type==='政策法规'){
param.index="zcfg";
param.type="zcfgData";
param.fileName="fileName,mainContent";
}else if(type==='诗词'){
param.index="projectname";
param.type="testPoetry";
param.fileName="title,content";
}
if(config.type==='up'){
if(param.page<=0){
param.page=0;
}else{
param.page--;
}
}else if(config.type==='next'){
param.page++;
}else if(config.type===null){
param.page=0;
}
Es.send(config);
}
}
</script>
</html>
2.新建控制器
package com.iflytek.sc.pl.project.es.web.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Order;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.baomidou.mybatisplus.toolkit.StringUtils;
import com.iflytek.sc.pl.project.es.model.DocBean;
import com.iflytek.sc.pl.project.es.service.TestService;
import com.iflytek.sc.pl.project.es.util.EsUtils;
@Controller
@RequestMapping({"/es"})
public class TestController {
@Resource(name = "esUtils")
private EsUtils esUtils;
@Autowired
private TestService testService;
@RequestMapping(value = "/esPage")
public Object esPage() {
return "/es/searchAppWords";
}
/**
* @Title: list
* @Description: TODO(oracle 数据测试接口)
* @author gangyu2
* @date 2018年8月6日下午5:10:13
*/
@RequestMapping(value = "/test")
@ResponseBody
public Object list() throws Exception {
return testService.list();
}
/**
* @Title: bigData
* @Description: TODO(自定义数据写入)
* @param size
* @author gangyu2
* @date 2018年8月6日下午5:09:57
*/
@RequestMapping(value = "/bigData")
@ResponseBody
public Map<String,Object> bigData(Integer size){
return testService.bigData(size);
}
/**
* @Title: dataPage
* @Description: TODO(测试数据)
* @param page
* @param pageSize
* @author gangyu2
* @date 2018年8月6日下午5:09:33
*/
@RequestMapping(value = "/dataPage")
@ResponseBody
public Map<String,Object> dataPage(Integer page,Integer pageSize){
return testService.dataPage(page,pageSize);
}
/**
* @Title: poetry
* @Description: TODO(诗歌添加)
* @author gangyu2
* @date 2018年8月6日下午5:09:10
*/
@RequestMapping(value = "/poetry")
@ResponseBody
public Map<String, Object> poetry(){
return testService.poetry();
}
/**
* @Title: singleQuery
* @Description: TODO(单词查询)
* @param word
* @param page
* @param pageSize
* @author gangyu2
* @date 2018年8月6日下午5:10:39
*/
@RequestMapping(value = "/singleQuery")
@ResponseBody
public Map<String, Object> singleQuery(String word,Integer page,Integer pageSize){
page=page==null?0:page;
pageSize=pageSize==null?10:pageSize;
page=page*pageSize;
List<Order> orderArr = new ArrayList<Order>();
Order order = Order.asc("userId");
orderArr.add(order);
Order order1 = Order.asc("weight");
orderArr.add(order1);
Pageable pageable = PageRequest.of(page, pageSize,Sort.by(orderArr));
return testService.singleQuery(word,pageable);
}
/**
* @Title: queryHighlight
* @Description: TODO(查询高亮)
* @param word
* @param page
* @param pageSize
* @param index
* @param type
* @author gangyu2
* @throws ClassNotFoundException
* @date 2018年8月6日下午5:11:20
*/
@RequestMapping(value = "/queryHighlight")
@ResponseBody
public Map<String,Object> queryHighlight(String word,Integer page,Integer pageSize,String index,String type,String fileName) throws ClassNotFoundException{
page=page==null?0:page;
pageSize=pageSize==null?10:pageSize;
page=page*pageSize;
String file[]=null;
if(StringUtils.isNotEmpty(fileName)) {
file=fileName.split(",");
}
Pageable pageable = PageRequest.of(page, pageSize,Sort.by(Sort.Direction.ASC, new String[] {"userId"}));
return testService.queryHighlight(word, pageable, index, type,file);
}
/**
* @Title: zcfg
* @Description: TODO(导入政策法规)
* @author gangyu2
* @date 2018年8月6日下午5:12:05
*/
@RequestMapping(value = "/zcfg")
@ResponseBody
public Map<String, Object> zcfg(DocBean docBean){
return testService.zcfg(docBean);
}
}
3.新建接口
package com.iflytek.sc.pl.project.es.service;
import java.util.List;
import java.util.Map;
import org.springframework.data.domain.Pageable;
import com.iflytek.sc.pl.project.es.model.DocBean;
public interface TestService {
public List<Map<String,Object>> list();
Map<String,Object> bigData(Integer size);
Map<String,Object> dataPage(Integer page,Integer pageSize);
Map<String,Object> poetry();
/**
* @Title: singleQuery
* @Description: TODO(分页查询)
* @param word
* @param pageble
* @author gangyu2
* @date 2018年8月6日下午2:11:27
*/
Map<String,Object> singleQuery(String word,Pageable pageble);
/**
* @Title: queryHighlight
* @Description: TODO(查询高亮)
* @param word
* @param pageable
* @param index
* @param type
* @author gangyu2
* @date 2018年8月6日下午2:11:12
*/
Map<String,Object> queryHighlight(String word,Pageable pageable,String index,String type,String fileName[]) throws ClassNotFoundException;
/**
* @Title: zcfg
* @Description: TODO(导入政策法规)
* @author gangyu2
* @date 2018年8月6日下午5:12:29
*/
Map<String,Object> zcfg(DocBean docBean);
}
4.新建实现类
package com.iflytek.sc.pl.project.es.service.impl;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.commons.lang3.RandomStringUtils;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.text.Text;
import org.elasticsearch.index.query.Operator;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.QueryStringQueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.query.IndexQuery;
import org.springframework.data.elasticsearch.core.query.IndexQueryBuilder;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.data.elasticsearch.core.query.SearchQuery;
import org.springframework.stereotype.Service;
import com.iflytek.sc.pl.project.es.dao.TestMapper;
import com.iflytek.sc.pl.project.es.model.DocBean;
import com.iflytek.sc.pl.project.es.model.SampleEntity;
import com.iflytek.sc.pl.project.es.model.TestPoetry;
import com.iflytek.sc.pl.project.es.service.TestService;
import com.iflytek.sc.pl.project.es.util.EsUtils;
import com.iflytek.sc.pl.project.es.util.GsonUtil;
@SuppressWarnings({ "unused", "unchecked", "serial"})
@Service
public class TestServiceImpl implements TestService{
@Autowired
private TestMapper testMapper;
@Resource(name = "elasticsearchTemplate")
private ElasticsearchTemplate elasticsearchTemplate;
@Autowired
private TransportClient transportClient;
@Override
public List<Map<String, Object>> list() {
return testMapper.lists();
}
@Override
public Map<String, Object> bigData(Integer size) {
SampleEntity entity = null;
List<IndexQuery> list=new ArrayList<IndexQuery>();
IndexQuery indexQuery = null;
for(int i=0;i<size;i++) {
entity = new SampleEntity();
entity.setId(System.currentTimeMillis()+Math.round(Math.random()*100000000)+"");
entity.setContent(System.currentTimeMillis()+Math.round(Math.random()*5)+"");
entity.setSex((int)Math.round(Math.random()*5));
entity.setTitle("SampleEntity");
entity.setUpdatetime(new Date());
indexQuery = new IndexQueryBuilder().withId(entity.getId()).withObject(entity).build();
list.add(indexQuery);
}
elasticsearchTemplate.bulkIndex(list);
Map<String, Object > h = new HashMap<String, Object>(){{
put("msg","插入数据"+size+"条");
}};
return h;
}
@Override
public Map<String, Object> dataPage(Integer page,Integer pageSize) {
page=page==null?0:page;
pageSize=pageSize==null?10:pageSize;
page=page*pageSize;
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withPageable(PageRequest.of(page, pageSize))
.build();
List<SampleEntity> list = elasticsearchTemplate.queryForList(searchQuery, SampleEntity.class);
Map<String, Object> h = new HashMap<String, Object>() {
{
put("msg", "成功");
}
};
h.put("data", list);
return h;
}
@Override
public Map<String, Object> poetry() {
TestPoetry poetry = null;
IndexQuery index =null;
List<IndexQuery> list =new ArrayList<IndexQuery>();
for(int i=0;i<EsUtils.getTitle().size();i++) {
poetry = new TestPoetry();
index = new IndexQuery();
poetry.setId(String.valueOf(i));
poetry.setTitle(EsUtils.getTitle().get(i));
poetry.setContent(RandomStringUtils.randomAlphanumeric(10));
poetry.setWeight(i);
poetry.setUserId(i % 10);
index = new IndexQueryBuilder().withId(poetry.getId()).withObject(poetry).build();
index.setId(poetry.getId());
list.add(index);
}
elasticsearchTemplate.bulkIndex(list);
Map<String,Object> m=new HashMap<String,Object>(){{
put("msg","添加诗歌"+EsUtils.getTitle().size()+"首");
}};
return m;
}
@Override
public Map<String, Object> singleQuery(String word, Pageable pageble) {
SearchQuery searcQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.matchQuery("title",word))
.withQuery(QueryBuilders.matchQuery("content","闺怨诗 宋·李清照 红藕香残玉簟秋。轻解罗裳,独上兰舟。云中谁寄锦书来?雁字回时,月"))
.build();
List<TestPoetry> list = elasticsearchTemplate.queryForList(searcQuery, TestPoetry.class);
Map<String,Object> m=new HashMap<String,Object>(){{
put("msg","字符串模糊查询,默认排序。将从所有字段中查找包含传来的word分词后字符串的数据集");
put("data",list);
}};
return m;
}
@SuppressWarnings("rawtypes")
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
Class c = Class.forName("com.iflytek.sc.pl.project.es.model.DocBean");
Method[] methods=c.getMethods();
for(int i =0 ;i<methods.length;i++) {
Method m1 = c.getMethod("setId",Integer.class);
Object obj = c.newInstance();
m1.invoke(obj,1);
Method m2 = c.getMethod("getId");
System.out.println(m2.invoke(obj));
System.out.println();
}
}
@Override
public Map<String, Object> queryHighlight(String word, Pageable pageable,String index,String type,String fileName[]) throws ClassNotFoundException {
Long startTime=System.currentTimeMillis();
HighlightBuilder highlightBuilder = new HighlightBuilder().field("*").requireFieldMatch(true);
highlightBuilder.preTags("<span style='color:red'>");
highlightBuilder.postTags("</span>");
QueryStringQueryBuilder queryBuilder = new QueryStringQueryBuilder("\""+word+"\"");
for(String file:fileName) {
queryBuilder.field(file).defaultOperator(Operator.AND);
}
queryBuilder.phraseSlop(QueryStringQueryBuilder.DEFAULT_PHRASE_SLOP);
SearchRequestBuilder searchRequestBuilder = transportClient.prepareSearch(index)
.setFrom(pageable.getPageNumber()).setSize(pageable.getPageSize())
.setTypes(type)
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(queryBuilder)
.addSort("_score",SortOrder.DESC)
.highlighter(highlightBuilder)
.setExplain(true);
SearchResponse searchResponse = searchRequestBuilder.get();
SearchHits searchHits = searchResponse.getHits();
SearchHit[] hits = searchHits.getHits();
List<Object> resultList= new ArrayList<Object>();
for (int i = 0; i < hits.length; i++) {
SearchHit hit = hits[i];
String json = hit.getSourceAsString();
Map<String,Object> dataMap = GsonUtil.parseObject(json, Map.class);
Map<String, HighlightField> result = hit.getHighlightFields();
for(String file:fileName) {
HighlightField titleField = result.get(file);
if (titleField !=null) {
Text[] titleTexts = titleField.fragments();
String title = "";
for (Text text : titleTexts) {
title += text;
}
dataMap.put(file, title);
}
}
resultList.add(dataMap);
}
Map<String,Object> map = new HashMap<String,Object>(){
{
put("msg","分词高亮数据");
put("data",resultList);
put("time", System.currentTimeMillis()-startTime);
}
};
return map;
}
@Override
public Map<String, Object> zcfg(DocBean docBean) {
IndexQuery index =null;
List<IndexQuery> list =new ArrayList<IndexQuery>();
for(int i=0;i<1;i++) {
index = new IndexQuery();
docBean.setCreateTime(new Date());
index = new IndexQueryBuilder().withObject(docBean).build();
list.add(index);
}
elasticsearchTemplate.bulkIndex(list);
Map<String,Object> m=new HashMap<String,Object>(){{
put("msg","导入政策法规"+EsUtils.getTitle().size());
}};
return m;
}
}
package com.iflytek.sc.pl.project.es.util;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.stereotype.Component;
@Component
public class EsUtils implements InitializingBean, DisposableBean {
private static final Logger logger = LoggerFactory.getLogger(EsUtils.class);
private static String indexName = "test";
private static String typeInfo = "test";
private TransportClient client;
private String ikurl;
@Resource(name = "elasticsearchTemplate")
private ElasticsearchTemplate elasticsearchTemplate;
public ElasticsearchTemplate getElasticsearchTemplate() {
return elasticsearchTemplate;
}
public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) {
this.elasticsearchTemplate = elasticsearchTemplate;
}
public String getIkurl() {
return ikurl;
}
public void setIkurl(String ikurl) {
this.ikurl = ikurl;
}
public static String getIndexName() {
return indexName;
}
public static void setIndexName(String indexName) {
EsUtils.indexName = indexName;
}
public static String getTypeInfo() {
return typeInfo;
}
public static void setTypeInfo(String typeInfo) {
EsUtils.typeInfo = typeInfo;
}
@Override
public void destroy() throws Exception {
try {
logger.info("Closing elasticSearch client");
if (client != null) {
client.close();
}
} catch (final Exception e) {
logger.error("Error closing ElasticSearch client: ", e);
}
}
@Override
public void afterPropertiesSet() throws Exception {
buildClient();
}
private void buildClient() throws Exception {
client = (TransportClient) elasticsearchTemplate.getClient();
}
public static List<String> getTitle() {
List<String> list = new ArrayList<>();
list.add("《如梦令·常记溪亭日暮》");
list.add("《醉花阴·薄雾浓云愁永昼》");
list.add("《声声慢·寻寻觅觅》");
list.add("《永遇乐·落日熔金》");
list.add("《如梦令·昨夜雨疏风骤》");
list.add("《渔家傲·雪里已知春信至》");
list.add("《点绛唇·蹴[1]罢秋千》");
list.add("《点绛唇·寂寞深闺》");
list.add("《蝶恋花·泪湿罗衣脂粉满》");
list.add("《蝶恋花 离情》");
list.add("《浣溪沙》");
list.add("《浣溪沙》");
list.add("《浣溪沙》");
list.add("《浣溪沙》");
list.add("《浣溪沙》");
list.add("《减字木兰花·卖花担上》");
list.add("《临江仙·欧阳公作《蝶恋花》");
list.add("《临江仙·庭院深深深几许》");
list.add("《念奴娇·萧条庭院》");
list.add("《菩萨蛮·风柔日薄春犹早》");
list.add("《菩萨蛮·归鸿声断残云碧》");
list.add("《武陵春·风住尘香花已尽》");
list.add("《一剪梅·红藕香残玉蕈秋》");
list.add("《渔家傲·天接云涛连晓雾》");
list.add("《鹧鸪天·暗淡轻黄体性柔》");
list.add("《鹧鸪天·寒日萧萧上锁窗》");
list.add("《一剪梅·红藕香残玉簟秋》");
list.add("《如梦令·常记溪亭日暮》");
list.add("《浣溪沙》");
list.add("《浣溪沙》");
list.add("《浣溪沙》");
list.add("《蝶恋花·泪湿罗衣脂粉满》");
list.add("《蝶恋花·暖日晴风初破冻》");
list.add("《鹧鸪天·寒日萧萧上锁窗》");
list.add("《醉花阴·薄雾浓云愁永昼》");
list.add("《鹧鸪天·暗淡轻黄体性柔》");
list.add("《蝶恋花·永夜恹恹欢意少》");
list.add("《浣溪沙》");
list.add("《浣溪沙》");
list.add("《如梦令·谁伴明窗独坐》");
return list;
}
public static List<String> getContent() {
List<String> list = new ArrayList<>();
list.add("初中 宋·李清照 常记溪亭日暮,沉醉不知归路,兴尽晚回舟,误入藕花深处。争渡,争渡");
list.add("重阳节 宋·李清照 薄雾浓云愁永昼,瑞脑消金兽。佳节又重阳,玉枕纱厨,半夜凉初透。东");
list.add("闺怨诗 宋·李清照 寻寻觅觅,冷冷清清,凄凄惨惨戚戚。乍暖还寒时候,最难将息。三杯两");
list.add("元宵节 宋·李清照 落日熔金,暮云合璧,人在何处。染柳烟浓,吹梅笛怨,春意知几许。元");
list.add("婉约诗 宋·李清照 昨夜雨疏风骤,浓睡不消残酒,试问卷帘人,却道海棠依旧。知否,知否");
list.add("描写梅花 宋·李清照 雪里已知春信至,寒梅点缀琼枝腻,香脸半开娇旖旎,当庭际,玉人浴出");
list.add(" 宋·李清照 蹴罢秋千,起来慵整纤纤手。露浓花瘦,薄汗轻衣透。见客入来,袜刬金");
list.add("闺怨诗 宋·李清照 寂寞深闺,柔肠一寸愁千缕。惜春春去。几点催花雨。倚遍阑干,只是无");
list.add("婉约诗 宋·李清照 泪湿罗衣脂粉满。四叠阳关,唱到千千遍。人道山长水又断。萧萧微雨闻");
list.add("描写春天 宋·李清照 暖雨晴风初破冻,柳眼梅腮,已觉春心动。酒意诗情谁与共?泪融残粉花");
list.add("寒食节 宋·李清照 淡荡春光寒食天,玉炉沈水袅残烟,梦回山枕隐花钿。海燕未来人斗草,");
list.add(" 宋·李清照 髻子伤春慵更梳,晚风庭院落梅初,淡云来往月疏疏,玉鸭薰炉闲瑞脑,");
list.add(" 宋·李清照 莫许杯深琥珀浓,未成沉醉意先融。疏钟已应晚来风。瑞脑香消魂梦断,");
list.add("闺怨诗 宋·李清照 小院闲窗春已深,重帘未卷影沉沉。倚楼无语理瑶琴,远岫出山催薄暮。");
list.add("爱情诗 宋·李清照 绣幕芙蓉一笑开,斜偎宝鸭亲香腮,眼波才动被人猜。一面风情深有韵,");
list.add("描写春天 宋·李清照 卖花担上,买得一枝春欲放。泪染轻匀,犹带彤霞晓露痕。怕郎猜道,奴");
list.add("》 宋·李清照 欧阳公作《蝶恋花》,有“深深深几许”之句,予酷爱之。用其语作“庭");
list.add("描写梅花 宋·李清照 庭院深深深几许,云窗雾阁春迟,为谁憔悴损芳姿。夜来清梦好,应是发");
list.add("寒食节 宋·李清照 萧条庭院,又斜风细雨,重门须闭。宠柳娇花寒食近,种种恼人天气。险");
list.add("思乡诗 宋·李清照 风柔日薄春犹早,夹衫乍著心情好。睡起觉微寒,梅花鬓上残。故乡何处");
list.add("描写春天 宋·李清照 归鸿声断残云碧,背窗雪落炉烟直。烛底凤钗明,钗头人胜轻。角声催晓");
list.add("闺怨诗 宋·李清照 风住尘香花已尽,日晚倦梳头。物是人非事事休,欲语泪先流。闻说双溪");
list.add(" 宋·李清照 红藕香残玉蕈秋,轻解罗裳,独上兰舟。云中谁寄锦书来?雁字回时,月");
list.add("豪放诗 宋·李清照 天接云涛连晓雾。星河欲转千帆舞。仿佛梦魂归帝所。闻天语。殷勤问我");
list.add("描写花 宋·李清照 暗淡轻黄体性柔。情疏迹远只香留。何须浅碧深红色,自是花中第一流。");
list.add("描写秋天 宋·李清照 寒日萧萧上琐窗,梧桐应恨夜来霜。酒阑更喜团茶苦,梦断偏宜瑞脑香。");
list.add("闺怨诗 宋·李清照 红藕香残玉簟秋。轻解罗裳,独上兰舟。云中谁寄锦书来?雁字回时,月");
list.add(" 宋·李清照 常记溪亭日暮。沈醉不知归路。兴尽晚回舟,误入藕花深处。争渡。争渡");
list.add(" 宋·李清照 莫许杯深琥珀浓。未成沈醉意先融。已应晚来风。瑞脑香消魂梦断,");
list.add(" 宋·李清照 小院闲窗春色深。重帘未卷影沈沈。倚楼无语理瑶琴。远岫出山催薄暮,");
list.add(" 宋·李清照 淡荡春光寒食天。玉炉沈水袅残烟。梦回山枕隐花钿。海燕未来人斗草,");
list.add(" 宋·李清照 泪湿罗衣脂粉满。四叠阳关,唱到千千遍。人道山长山又断。萧萧微雨闻");
list.add(" 宋·李清照 暖日晴风初破冻。柳眼眉腮,已觉春心动。酒意诗情谁与共。泪融残粉花");
list.add(" 宋·李清照 寒日萧萧上锁窗。梧桐应恨夜来霜。酒阑更喜团茶苦,梦断偏宜瑞脑香。");
list.add(" 宋·李清照 薄雾浓云愁永昼。瑞脑消金兽。佳节又重阳,玉枕纱厨,半夜凉初透。东");
list.add(" 宋·李清照 暗淡轻黄体性柔。情疏迹远只香留。何须浅碧深红色,自是花中第一流。");
list.add(" 宋·李清照 永夜恹恹欢意少。空梦长安,认取长安道。为报今年春色好。花光月影宜");
list.add(" 宋·李清照 髻子伤春慵更梳。晚风庭院落梅初。淡云来往月疏疏。玉鸭熏炉闲瑞脑,");
list.add(" 宋·李清照 绣面芙蓉一笑开。斜飞宝鸭衬香腮。眼波才动被人猜。一面风情深有韵,");
list.add(" 宋·李清照 谁伴明窗独坐,我共影儿俩个。灯尽欲眠时,影也把人抛躲。无那,无那");
return list;
}
}
5.最终页面效果