Commit 43c7acd9 by 侯昆

修改查询逻辑

1 parent 0083c3ca
......@@ -15,16 +15,14 @@ package com.dookay.cihai.app.controller;
****************************************/
import com.baidu.aip.util.Base64Util;
import com.dookay.cihai.core.word.dto.WordDTO;
import com.dookay.cihai.core.aip.AipDefaultClient;
import com.dookay.cihai.core.aip.AipWordUtilBean;
import com.dookay.cihai.core.aip.model.LexerItem;
import com.dookay.cihai.core.aip.model.ScanResult;
import com.dookay.cihai.core.word.domain.CustomDictionaryDomain;
import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.dto.OneCharacterDTO;
import com.dookay.cihai.core.word.dto.RecommendStatementDTO;
import com.dookay.cihai.core.word.query.CustomDictionaryQuery;
import com.dookay.cihai.core.word.dto.WordDTO;
import com.dookay.cihai.core.word.query.WordQuery;
import com.dookay.cihai.core.word.service.ICustomDictionaryService;
import com.dookay.cihai.core.word.service.IWordRelationService;
......@@ -81,31 +79,21 @@ public class HomeController extends BaseController {
if (StringUtils.isBlank(keyword)) {
return errorResult("搜索内容不能为空");
}
String result = null;
boolean inDic = false;
List<CustomDictionaryDomain> dictionaryDomainList = customDictionaryService.getList(new CustomDictionaryQuery());
for (CustomDictionaryDomain dic : dictionaryDomainList) {
if (keyword.contains(dic.getWord())) {
result = dic.getWord();
inDic = true;
}
WordQuery query = new WordQuery();
query.setKeyword(keyword);
WordDomain first = wordService.getFirst(query);
if (first != null) {
return successResult("搜索结果", WordDTO.fromDomain(first, wordRelationService));
}
try {
if (!inDic) {
result = aipWordUtilBean.extractQueryKeyword(keyword);
}
WordQuery wordQuery = new WordQuery();
wordQuery.setKeyword(result);
WordDomain wordDomain = wordService.getFirst(wordQuery);
if (wordDomain == null) {
String result = null;
List<LexerItem> items = aipWordUtilBean.getLexerItems(result);
WordQuery wordQuery = new WordQuery();
wordQuery.setKeywordList(items.stream().map(LexerItem::getItem).collect(Collectors.toList()));
wordQuery.setKeyword(null);
wordDomain = wordService.getFirst(wordQuery);
WordDomain wordDomain = wordService.getFirst(wordQuery);
if (wordDomain == null) return errorResult(String.format("暂无\"%s\"检索结果", keyword));
return successResult("搜索结果", WordDTO.fromDomain(wordDomain, wordRelationService));
}
return successResult("success", WordDTO.fromDomain(wordDomain, wordRelationService));
} catch (Exception ex) {
return errorResult(String.format("暂无\"%s\"检索结果", keyword));
}
......
......@@ -40,7 +40,7 @@ public class WordQuery extends Query {
}
if (valid(keyword)) {
String str = "%" + keyword + "%";
criteria.andCondition(String.format("(word like '%s' or word_alias like '%s')", str, str));
criteria.andCondition(String.format("(word = '%s' or word_alias like '%s')", keyword, str));
}
if (valid(keywordList)) {
String sql = "";
......
......@@ -20,11 +20,9 @@ import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.dto.WordImportDTO;
import com.dookay.cihai.core.word.mapper.CustomDictionaryMapper;
import com.dookay.cihai.core.word.mapper.WordMapper;
import com.dookay.cihai.core.word.service.ICustomDictionaryService;
import com.dookay.cihai.core.word.service.IWordService;
import com.dookay.coral.common.core.utils.excel.ExcelUtils;
import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
......@@ -48,16 +46,22 @@ public class TestImportWord extends CihaiCoreApplicationTests {
@Autowired
private WordMapper wordMapper;
private String[] files = {"三言二拍系列", "中国的相关词", "二十四节气", "太阳", "太阳系", "春节", "象", "银河系", "马克思", "鲁迅"};
@Test
@Rollback(false)
public void testImport() throws Exception {
// String file = "辞海词语导入模版.xls";
String file = "鲁迅词条_V1.xls";
File excel = ResourceUtils.getFile("classpath:" + file);
for (String file : files) {
File excel = ResourceUtils.getFile("classpath:excel/" + file + ".xls");
try {
List<WordImportDTO> list = ExcelUtils.importExcel(excel, WordImportDTO.class);
List<WordDomain> wordDomains = list.stream().map(WordImportDTO::toDomain).collect(Collectors.toList());
List<CustomDictionaryDomain> dictionaryDomains = list.stream().map(w -> new CustomDictionaryDomain(w.getWord())).collect(Collectors.toList());
int i = wordMapper.insertList(wordDomains);
int j = customDictionaryMapper.insertList(dictionaryDomains);
} catch (Exception e) {
log.warn(file + "没导进去", e);
}
}
}
}
delete from t_word where word != '象';
delete from t_custom_dictionary where word != '象';
truncate table t_word_relation;
\ No newline at end of file
......@@ -20,10 +20,8 @@ import com.dookay.cihai.core.aip.AipImageClassifyClient;
import com.dookay.cihai.core.aip.AipWordUtilBean;
import com.dookay.cihai.core.aip.model.LexerItem;
import com.dookay.cihai.core.aip.model.ScanResult;
import com.dookay.cihai.core.word.domain.CustomDictionaryDomain;
import com.dookay.cihai.core.word.domain.WordDomain;
import com.dookay.cihai.core.word.dto.WordDTO;
import com.dookay.cihai.core.word.query.CustomDictionaryQuery;
import com.dookay.cihai.core.word.query.WordQuery;
import com.dookay.cihai.core.word.service.ICustomDictionaryService;
import com.dookay.cihai.core.word.service.IWordRelationService;
......@@ -99,19 +97,15 @@ public class HomeController extends BaseController {
if (StringUtils.isBlank(keyword)) {
return errorResult("搜索内容不能为空");
}
String result = null;
boolean inDic = false;
List<CustomDictionaryDomain> dictionaryDomainList = customDictionaryService.getList(new CustomDictionaryQuery());
for (CustomDictionaryDomain dic : dictionaryDomainList) {
if (keyword.contains(dic.getWord())) {
result = dic.getWord();
inDic = true;
}
WordQuery query = new WordQuery();
query.setKeyword(keyword);
WordDomain first = wordService.getFirst(query);
if (first != null) {
return successResult("搜索结果", WordDTO.fromDomain(first, wordRelationService));
}
try {
if (!inDic) {
String result = null;
result = aipWordUtilBean.extractQueryKeyword(keyword);
}
WordQuery wordQuery = new WordQuery();
wordQuery.setKeyword(result);
WordDomain wordDomain = wordService.getFirst(wordQuery);
......@@ -166,6 +160,7 @@ public class HomeController extends BaseController {
/**
* 历史上的今天
*
* @author houkun
* @date 2018/1/16
*/
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!