查询优化
This commit is contained in:
parent
f8eb9d889d
commit
1fc7bcb5f2
Binary file not shown.
|
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 124 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 137 KiB |
|
|
@ -1497,7 +1497,6 @@ const handleInput = (value, options = {}) => {
|
||||||
if (currentPart) {
|
if (currentPart) {
|
||||||
scheduleSearchHint(currentPart);
|
scheduleSearchHint(currentPart);
|
||||||
}
|
}
|
||||||
// 移除实时调用 differenceWords,只在条件完成(有分号)或点击查询时调用
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const fetchSearchHints = async (keyword) => {
|
const fetchSearchHints = async (keyword) => {
|
||||||
|
|
@ -1532,20 +1531,36 @@ const fetchSearchHints = async (keyword) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取精准查询条件索引集合,用于确定 queryType
|
||||||
|
const preciseIndexSet = getPreciseIndexSet();
|
||||||
|
|
||||||
// 构建 fieldConditions,使用重新排序后的条件顺序
|
// 构建 fieldConditions,使用重新排序后的条件顺序
|
||||||
const fieldConditions = conditionsToProcess
|
const fieldConditions = conditionsToProcess
|
||||||
.filter((condition) => {
|
.filter((condition) => {
|
||||||
// 保留有值的条件,或者有字段名但没有值的条件(如 "车型:")
|
// 保留有值的条件,或者有字段名但没有值的条件(如 "车型:")
|
||||||
return condition.value || (condition.fieldLabel && condition.field);
|
return condition.value || (condition.fieldLabel && condition.field);
|
||||||
})
|
})
|
||||||
.map((condition) => {
|
.map((condition, index) => {
|
||||||
|
// 计算原始索引(用于精准查询)
|
||||||
|
// 精准查询条件是基于字段和值匹配的,所以需要找到对应的原始索引
|
||||||
|
const originalIndex = parsedConditions.value.findIndex(
|
||||||
|
(c) =>
|
||||||
|
c.fieldLabel === condition.fieldLabel &&
|
||||||
|
c.value === condition.value &&
|
||||||
|
c.field === condition.field
|
||||||
|
);
|
||||||
|
// 如果找不到原始索引,使用当前索引
|
||||||
|
const finalIndex = originalIndex !== -1 ? originalIndex : index;
|
||||||
|
// 根据条件是否在精准查询集合中确定 queryType,和 buildFieldConditionsPayload 保持一致
|
||||||
|
const queryType = preciseIndexSet.has(finalIndex) ? "EXACT" : "FUZZY";
|
||||||
|
|
||||||
// 1)字段 + 值:结构化查询
|
// 1)字段 + 值:结构化查询
|
||||||
if (condition.valid && condition.field && condition.value) {
|
if (condition.valid && condition.field && condition.value) {
|
||||||
return {
|
return {
|
||||||
fieldName: condition.field,
|
fieldName: condition.field,
|
||||||
fieldValue: condition.value,
|
fieldValue: condition.value,
|
||||||
keyword: "",
|
keyword: "",
|
||||||
queryType: "FUZZY",
|
queryType,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1555,7 +1570,7 @@ const fetchSearchHints = async (keyword) => {
|
||||||
fieldName: condition.field,
|
fieldName: condition.field,
|
||||||
fieldValue: "",
|
fieldValue: "",
|
||||||
keyword: "",
|
keyword: "",
|
||||||
queryType: "FUZZY",
|
queryType,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1572,7 +1587,7 @@ const fetchSearchHints = async (keyword) => {
|
||||||
// fieldName: "",
|
// fieldName: "",
|
||||||
// fieldValue: condition.value,
|
// fieldValue: condition.value,
|
||||||
// keyword: "",
|
// keyword: "",
|
||||||
// queryType: "FUZZY",
|
// queryType,
|
||||||
// };
|
// };
|
||||||
// }
|
// }
|
||||||
// // 否则继续走方案4,放在 keyword 里
|
// // 否则继续走方案4,放在 keyword 里
|
||||||
|
|
@ -1588,7 +1603,7 @@ const fetchSearchHints = async (keyword) => {
|
||||||
fieldName: "",
|
fieldName: "",
|
||||||
fieldValue: "",
|
fieldValue: "",
|
||||||
keyword,
|
keyword,
|
||||||
queryType: "FUZZY",
|
queryType,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue