/**
* 模糊标签查询答案 实现类
* @return
*/
@Override
public List<AiKapQA> queryListByIssueTag(List<String> tags, Integer puserId) {
AiKapQAExample example = new AiKapQAExample();
Criteria cri = example.createCriteria();
List<Integer> list = queryTypeList(puserId);
if(null==list||list.isEmpty()){
return null;
}else{
cri.andStatusEqualTo(1).andTypeIn(list);
}
if(null!=tags&&tags.size()>0){
for(int i=0;i<tags.size();i++){
if(i==0){
cri.andIssueLike("%"+tags.get(0)+"%");//必须有第一个
}else{
Criteria tempcri = example.createCriteria();
tempcri.andIssueLike("%"+tags.get(i)+"%");
example.or(tempcri);
}
}
}
Map<Integer,Integer> tmpMap = new HashMap<>();
List<AiKapQA> reList = aiKapQAMapper.selectByExample(example);
for(int i=0;i<reList.size();i++){
AiKapQA aiKapQA = reList.get(i);
int sum = 0;
for(int j=0;j<tags.size();j++){
String tag = tags.get(j);
if(aiKapQA.getIssue().contains(tag)){
sum++;
}
}
tmpMap.put(i,sum);
}
List<AiKapQA> returnList = new ArrayList<>();
Map<Integer, Integer> temMaps = sortMapByValue(tmpMap);
int i = 1;
for (Integer key : temMaps.keySet()) {
returnList.add(reList.get(key));
i++;
if(i >= 6){
break;
}
}
return returnList;
}
/**
* 使用 Map按value进行排序
* @param map
* @return
*/
public static Map<Integer, Integer> sortMapByValue(Map<Integer, Integer> oriMap) {
if (oriMap == null || oriMap.isEmpty()) {
return null;
}
Map<Integer, Integer> sortedMap = new LinkedHashMap<Integer, Integer>();
List<Map.Entry<Integer, Integer>> entryList = new ArrayList<Map.Entry<Integer, Integer>>(oriMap.entrySet());
Collections.sort(entryList, new MapValueComparator());
Iterator<Map.Entry<Integer, Integer>> iter = entryList.iterator();
Map.Entry<Integer, Integer> tmpEntry = null;
while (iter.hasNext()) {
tmpEntry = iter.next();
sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
}
return sortedMap;
}
/**
* 使用 比较器
* @param map
* @return
*/
static class MapValueComparator implements Comparator<Map.Entry<Integer, Integer>> {
@Override
public int compare(Entry<Integer, Integer> me1, Entry<Integer, Integer> me2) {
return me2.getValue().compareTo(me1.getValue());
}
}
模糊标签查询并使用比较器
猜你喜欢
转载自blog.csdn.net/rentian1/article/details/81109437
今日推荐
周排行