@shirokuma-library/mcp-knowledge-base
Version:
MCP server for AI-powered knowledge management with semantic search, graph analysis, and automatic enrichment
43 lines (42 loc) • 1.55 kB
JavaScript
export class SearchQueryParser {
parse(query) {
const filters = {};
const keywords = [];
const filterPattern = /(\w+):([^\s]+)/g;
let remaining = query;
const matches = [];
let match;
while ((match = filterPattern.exec(query)) !== null) {
const [fullMatch, key, value] = match;
matches.push({ key, value, fullMatch });
}
for (const { key, value, fullMatch } of matches) {
switch (key) {
case 'status':
if (!filters.status)
filters.status = [];
filters.status.push(value);
break;
case 'type':
if (!filters.type)
filters.type = [];
filters.type.push(value);
break;
case 'is':
if (value === 'open' || value === 'closed') {
filters.is = value;
}
break;
case 'priority':
if (!filters.priority)
filters.priority = [];
filters.priority.push(value.toUpperCase());
break;
}
remaining = remaining.replace(fullMatch, ' ');
}
const remainingWords = remaining.trim().split(/\s+/).filter(w => w.length > 0);
keywords.push(...remainingWords);
return { keywords, filters, raw: query };
}
}