|
@@ -28,7 +28,7 @@ segment.useDefault();
|
|
|
let nodejieba = require('../../dict/jieba');
|
|
|
|
|
|
let nameWeightMap ={
|
|
|
- '普通':-99
|
|
|
+ // '普通':-99
|
|
|
}
|
|
|
|
|
|
|
|
@@ -112,6 +112,12 @@ async function getDataByCondition(data,compilation){
|
|
|
if (data.code) {
|
|
|
result = await getDataByCode(data.code, data);
|
|
|
if (result.totalSize > 0) return result;
|
|
|
+
|
|
|
+ //如果分类编码有结果,但是确没有匹配的条数,说明关键字没匹配上,直接返回没有信息价
|
|
|
+ if(result.allItems > 0 && result.totalSize === 0){
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//编号匹配不上的情况:
|
|
@@ -153,14 +159,19 @@ async function getDataByCode(code, data) {
|
|
|
if(item.name.indexOf(data.keyWord) != -1) items.push(item) //有完全匹配的,就不用编码下的返回所有数据了
|
|
|
}
|
|
|
}
|
|
|
- //没有完全匹配的,返回所有
|
|
|
- if (items.length === 0) items = allItems;
|
|
|
+ //没有完全匹配的,分词匹配关键字
|
|
|
+ if (items.length === 0){
|
|
|
+ let nameArray = nodejieba.cut(data.keyWord);
|
|
|
+ nameArray = cusSegment(nameArray,data.keyWord);
|
|
|
+ let result = getMatchPrice(allItems,nameArray);
|
|
|
+ items = result.items;
|
|
|
+ }
|
|
|
|
|
|
let totalSize = items.length;
|
|
|
|
|
|
//新需求结束 ---------
|
|
|
|
|
|
- return {totalSize,items}
|
|
|
+ return {totalSize,items,allItems}
|
|
|
}
|
|
|
|
|
|
|
|
@@ -176,8 +187,10 @@ async function getDataByKeyWord(keyword, data) {
|
|
|
|
|
|
//按全关键字匹配
|
|
|
async function getDataByFullKeyWord(keyword, data){
|
|
|
- data.condition.name = new RegExp(keyword);
|
|
|
- let items = await infoItemsModel.find(data.condition).lean().sort({"_id":1});
|
|
|
+ let items = [];
|
|
|
+ data.condition.name = new RegExp(keyword);
|
|
|
+ items = await infoItemsModel.find(data.condition).lean().sort({"_id":1});
|
|
|
+
|
|
|
delete data.condition.name;
|
|
|
return{totalSize:items.length,items}
|
|
|
}
|