|
|
@@ -623,6 +623,31 @@ public class SearchServiceImpl implements SearchService {
|
|
|
|
|
|
@Override
|
|
|
public List<Map<String, Object>> getSimilarKinds(String kindName) {
|
|
|
+ return getSimilarKinds(kindName, null, null);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getSimilarLeafKinds(String kindName) {
|
|
|
+ return getSimilarKinds(kindName, (short) 1, null);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, Object>> getSimilarKindsByLevel(String kindName, Short level) {
|
|
|
+ return getSimilarKinds(kindName, null, level);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据输入的类目名获取联想词
|
|
|
+ *
|
|
|
+ * @param kindName
|
|
|
+ * 类目名
|
|
|
+ * @param isLeaf
|
|
|
+ * 是否只获取末级类目
|
|
|
+ * @param level
|
|
|
+ * 指定的类目级别
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<Map<String, Object>> getSimilarKinds(String kindName, Short isLeaf, Short level) {
|
|
|
String message = "";
|
|
|
if (isKeywordInvalid(kindName)) {
|
|
|
message = "输入无效:" + kindName;
|
|
|
@@ -639,7 +664,18 @@ public class SearchServiceImpl implements SearchService {
|
|
|
|
|
|
List<Map<String, Object>> kinds = new ArrayList<>();
|
|
|
try {
|
|
|
- BooleanQuery booleanQuery = getBooleanQuery(SearchConstants.KIND_NAMECN_FIELD, kindName);
|
|
|
+ BooleanQuery booleanQuery = new BooleanQuery();
|
|
|
+ booleanQuery.add(getBooleanQuery(SearchConstants.KIND_NAMECN_FIELD, kindName), BooleanClause.Occur.MUST);
|
|
|
+
|
|
|
+ if (isLeaf != null && isLeaf == 1) {
|
|
|
+ booleanQuery.add(new TermQuery(new Term(SearchConstants.KIND_ISLEAF_FIELD, String.valueOf(isLeaf))),
|
|
|
+ BooleanClause.Occur.MUST);
|
|
|
+ } else {
|
|
|
+ if (level != null && level > 0) {
|
|
|
+ booleanQuery.add(new TermQuery(new Term(SearchConstants.KIND_LEVEL_FIELD, String.valueOf(level))),
|
|
|
+ BooleanClause.Occur.MUST);
|
|
|
+ }
|
|
|
+ }
|
|
|
logger.info(booleanQuery);
|
|
|
TopDocs hits = searcher.search(booleanQuery, SIMILAR_NUM);
|
|
|
ScoreDoc[] scoreDocs = hits.scoreDocs;
|
|
|
@@ -648,6 +684,8 @@ public class SearchServiceImpl implements SearchService {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
map.put("id", Long.parseLong(document.get(SearchConstants.KIND_ID_FIELD)));
|
|
|
map.put("nameCn", document.get(SearchConstants.KIND_NAMECN_FIELD));
|
|
|
+ map.put("isLeaf", Short.parseShort(document.get(SearchConstants.KIND_ISLEAF_FIELD)));
|
|
|
+ map.put("level", Short.parseShort(document.get(SearchConstants.KIND_LEVEL_FIELD)));
|
|
|
kinds.add(map);
|
|
|
}
|
|
|
} catch (IOException e) {
|