mirror of
https://github.com/zadam/trilium.git
synced 2025-11-09 23:05:51 +01:00
search refactoring
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
const noteCacheService = require('../../services/note_cache/note_cache_service');
|
||||
const searchService = require('../../services/search/search');
|
||||
const searchService = require('../../services/search/services/search.js');
|
||||
const repository = require('../../services/repository');
|
||||
const log = require('../../services/log');
|
||||
const utils = require('../../services/utils');
|
||||
|
||||
@@ -4,7 +4,7 @@ const repository = require('../../services/repository');
|
||||
const noteCacheService = require('../../services/note_cache/note_cache.js');
|
||||
const log = require('../../services/log');
|
||||
const scriptService = require('../../services/script');
|
||||
const searchService = require('../../services/search/search');
|
||||
const searchService = require('../../services/search/services/search.js');
|
||||
|
||||
function searchNotes(req) {
|
||||
const {count, results} = searchService.searchTrimmedNotes(req.params.searchString);
|
||||
|
||||
@@ -12,7 +12,7 @@ const dayjs = require('dayjs');
|
||||
const cloningService = require('./cloning');
|
||||
const ws = require('./ws.js');
|
||||
const appInfo = require('./app_info');
|
||||
const searchService = require('./search/search');
|
||||
const searchService = require('./search/services/search.js');
|
||||
|
||||
/**
|
||||
* This is the main backend API interface for scripts. It's published in the local "api" object.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* This will create a recursive object from list of tokens - tokens between parenthesis are grouped in a single array
|
||||
*/
|
||||
function parens(tokens) {
|
||||
function handle_parens(tokens) {
|
||||
if (tokens.length === 0) {
|
||||
return [];
|
||||
}
|
||||
@@ -34,10 +34,10 @@ function parens(tokens) {
|
||||
|
||||
tokens = [
|
||||
...tokens.slice(0, leftIdx),
|
||||
parens(tokens.slice(leftIdx + 1, rightIdx)),
|
||||
handle_parens(tokens.slice(leftIdx + 1, rightIdx)),
|
||||
...tokens.slice(rightIdx + 1)
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = parens;
|
||||
module.exports = handle_parens;
|
||||
@@ -1,4 +1,4 @@
|
||||
function lexer(str) {
|
||||
function lex(str) {
|
||||
str = str.toLowerCase();
|
||||
|
||||
const fulltextTokens = [];
|
||||
@@ -130,4 +130,4 @@ function lexer(str) {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = lexer;
|
||||
module.exports = lex;
|
||||
@@ -1,21 +1,21 @@
|
||||
"use strict";
|
||||
|
||||
const AndExp = require('./expressions/and');
|
||||
const OrExp = require('./expressions/or');
|
||||
const NotExp = require('./expressions/not');
|
||||
const ChildOfExp = require('./expressions/child_of');
|
||||
const DescendantOfExp = require('./expressions/descendant_of');
|
||||
const ParentOfExp = require('./expressions/parent_of');
|
||||
const RelationWhereExp = require('./expressions/relation_where');
|
||||
const PropertyComparisonExp = require('./expressions/property_comparison');
|
||||
const AttributeExistsExp = require('./expressions/attribute_exists');
|
||||
const LabelComparisonExp = require('./expressions/label_comparison');
|
||||
const NoteCacheFulltextExp = require('./expressions/note_cache_fulltext');
|
||||
const NoteContentProtectedFulltextExp = require('./expressions/note_content_protected_fulltext');
|
||||
const NoteContentUnprotectedFulltextExp = require('./expressions/note_content_unprotected_fulltext');
|
||||
const OrderByAndLimitExp = require('./expressions/order_by_and_limit');
|
||||
const comparatorBuilder = require('./comparator_builder');
|
||||
const ValueExtractor = require('./value_extractor');
|
||||
const AndExp = require('../expressions/and.js');
|
||||
const OrExp = require('../expressions/or.js');
|
||||
const NotExp = require('../expressions/not.js');
|
||||
const ChildOfExp = require('../expressions/child_of.js');
|
||||
const DescendantOfExp = require('../expressions/descendant_of.js');
|
||||
const ParentOfExp = require('../expressions/parent_of.js');
|
||||
const RelationWhereExp = require('../expressions/relation_where.js');
|
||||
const PropertyComparisonExp = require('../expressions/property_comparison.js');
|
||||
const AttributeExistsExp = require('../expressions/attribute_exists.js');
|
||||
const LabelComparisonExp = require('../expressions/label_comparison.js');
|
||||
const NoteCacheFulltextExp = require('../expressions/note_cache_fulltext.js');
|
||||
const NoteContentProtectedFulltextExp = require('../expressions/note_content_protected_fulltext.js');
|
||||
const NoteContentUnprotectedFulltextExp = require('../expressions/note_content_unprotected_fulltext.js');
|
||||
const OrderByAndLimitExp = require('../expressions/order_by_and_limit.js');
|
||||
const comparatorBuilder = require('./build_comparator.js');
|
||||
const ValueExtractor = require('../value_extractor.js');
|
||||
|
||||
function getFulltext(tokens, parsingContext) {
|
||||
tokens = tokens.map(t => t.token);
|
||||
@@ -1,16 +1,16 @@
|
||||
"use strict";
|
||||
|
||||
const lexer = require('./lexer');
|
||||
const parens = require('./parens');
|
||||
const parser = require('./parser');
|
||||
const NoteSet = require("./note_set");
|
||||
const SearchResult = require("./search_result");
|
||||
const ParsingContext = require("./parsing_context");
|
||||
const noteCache = require('../note_cache/note_cache');
|
||||
const noteCacheService = require('../note_cache/note_cache_service');
|
||||
const hoistedNoteService = require('../hoisted_note');
|
||||
const repository = require('../repository');
|
||||
const utils = require('../utils');
|
||||
const lex = require('./lex.js');
|
||||
const handleParens = require('./handle_parens.js');
|
||||
const parse = require('./parse.js');
|
||||
const NoteSet = require("../note_set.js");
|
||||
const SearchResult = require("../search_result.js");
|
||||
const ParsingContext = require("../parsing_context.js");
|
||||
const noteCache = require('../../note_cache/note_cache.js');
|
||||
const noteCacheService = require('../../note_cache/note_cache_service.js');
|
||||
const hoistedNoteService = require('../../hoisted_note.js');
|
||||
const repository = require('../../repository.js');
|
||||
const utils = require('../../utils.js');
|
||||
|
||||
/**
|
||||
* @param {Expression} expression
|
||||
@@ -51,10 +51,10 @@ function findNotesWithExpression(expression) {
|
||||
}
|
||||
|
||||
function parseQueryToExpression(query, parsingContext) {
|
||||
const {fulltextTokens, expressionTokens} = lexer(query);
|
||||
const structuredExpressionTokens = parens(expressionTokens);
|
||||
const {fulltextTokens, expressionTokens} = lex(query);
|
||||
const structuredExpressionTokens = handleParens(expressionTokens);
|
||||
|
||||
const expression = parser({
|
||||
const expression = parse({
|
||||
fulltextTokens,
|
||||
expressionTokens: structuredExpressionTokens,
|
||||
parsingContext
|
||||
Reference in New Issue
Block a user