修复多关键词搜索问题
This commit is contained in:
parent
95f9fc86fe
commit
ed1fd2898c
@ -43,7 +43,6 @@
|
||||
</div>
|
||||
<div id="tabContentAi" class="tab-content">
|
||||
<div id="llmResultContainer" class="llm-result-container">
|
||||
<div class="llm-title">智能助手答案</div>
|
||||
<div class="llm-result-content" id="llmResultContent"></div>
|
||||
<div class="llm-input-bar">
|
||||
<input id="llmInput" type="text" placeholder="请输入您的问题..." />
|
||||
|
||||
@ -286,7 +286,7 @@ document.addEventListener("DOMContentLoaded", async () => {
|
||||
// 实时渲染,思考内容和正式回答分区块
|
||||
msgBox.innerHTML =
|
||||
(thinkStr
|
||||
? `<div class="llm-think">模型思考过程:${thinkStr}</div>`
|
||||
? `<div class="llm-think">${thinkStr}</div>`
|
||||
: "") +
|
||||
`<span class="assistant-label">智能助手:</span>${answerStr}`;
|
||||
llmResultContent.scrollTop = llmResultContent.scrollHeight;
|
||||
@ -405,8 +405,8 @@ document.addEventListener("DOMContentLoaded", async () => {
|
||||
});
|
||||
}
|
||||
|
||||
async function fetchResults(keywords, page) {
|
||||
log("执行搜索:", keywords, "page:", page);
|
||||
async function fetchResults(rawInput, page) {
|
||||
log("执行搜索:", rawInput, "page:", page);
|
||||
|
||||
if (!token) {
|
||||
log("token 未初始化,跳转 login");
|
||||
@ -415,9 +415,9 @@ document.addEventListener("DOMContentLoaded", async () => {
|
||||
}
|
||||
|
||||
currentPage = page;
|
||||
lastKeywords = keywords;
|
||||
lastKeywords = rawInput;
|
||||
|
||||
const keywordGroups = keywords.map(k => [k]);
|
||||
const keywordGroups = parseKeywordGroups(rawInput);
|
||||
const requestBody = {
|
||||
keywordGroups,
|
||||
page: currentPage,
|
||||
@ -479,21 +479,41 @@ document.addEventListener("DOMContentLoaded", async () => {
|
||||
}
|
||||
}
|
||||
|
||||
function parseKeywordGroups(inputStr) {
|
||||
if (typeof inputStr !== "string") return [];
|
||||
|
||||
return inputStr
|
||||
.trim()
|
||||
.split("||") // 用 || 分组(表示 OR)
|
||||
.map(group => {
|
||||
group = group.trim();
|
||||
if (group.startsWith("(") && group.endsWith(")")) {
|
||||
group = group.slice(1, -1); // 去括号
|
||||
}
|
||||
return group.split(/\s+/).filter(Boolean); // 空格分词(AND)
|
||||
})
|
||||
.filter(g => g.length > 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
function triggerSearch() {
|
||||
if (!token) {
|
||||
log("triggerSearch 中 token 丢失,取消搜索");
|
||||
return;
|
||||
}
|
||||
const val = input.value.trim();
|
||||
if (!val) return clearResults();
|
||||
const keywords = val.split(/\s+/);
|
||||
updateHistory(val);
|
||||
|
||||
const raw = input?.value?.trim();
|
||||
if (!raw) return clearResults();
|
||||
|
||||
updateHistory(raw);
|
||||
|
||||
// 并发触发 AnythingLLM + ES
|
||||
fetchLLMAnswer(val);
|
||||
fetchResults(keywords, 1);
|
||||
fetchLLMAnswer(raw);
|
||||
fetchResults(raw, 1); // 传字符串,不是 keywords[]
|
||||
}
|
||||
|
||||
|
||||
function bindEvents() {
|
||||
log("绑定事件成功");
|
||||
searchBtn.addEventListener("click", triggerSearch);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user