trilium/apps/server/test_search_integration.js

36 lines
1.2 KiB
JavaScript

import lex from "./apps/server/dist/services/search/services/lex.js";
import parse from "./apps/server/dist/services/search/services/parse.js";
import SearchContext from "./apps/server/dist/services/search/search_context.js";
// Test the integration of the lexer and parser
const testCases = [
"=example",
"example",
"=hello world"
];
for (const query of testCases) {
console.log(`\n=== Testing: "${query}" ===`);
const lexResult = lex(query);
console.log("Lex result:");
console.log(" Fulltext tokens:", lexResult.fulltextTokens.map(t => t.token));
console.log(" Leading operator:", lexResult.leadingOperator || "(none)");
const searchContext = new SearchContext.default({ fastSearch: false });
try {
const expression = parse.default({
fulltextTokens: lexResult.fulltextTokens,
expressionTokens: [],
searchContext,
originalQuery: query,
leadingOperator: lexResult.leadingOperator
});
console.log("Parse result: Success");
console.log(" Expression type:", expression.constructor.name);
} catch (e) {
console.log("Parse result: Error -", e.message);
}
}