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