Skip to content
Permalink
Browse files Browse the repository at this point in the history
Use regular aql framework for flex search expression tokenization
  • Loading branch information
Yogu committed Sep 2, 2022
1 parent e74dbdf commit 13b9233
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 6 deletions.
9 changes: 4 additions & 5 deletions src/database/arangodb/aql-generator.ts
Expand Up @@ -1762,12 +1762,11 @@ function isStringCaseInsensitive(str: string) {
return str.toLowerCase() === str.toUpperCase();
}

export function generateTokenizationQuery(tokensFiltered: ReadonlyArray<FlexSearchTokenizable>) {
const fragments: string[] = [];
export function generateTokenizationQuery(tokensFiltered: ReadonlyArray<FlexSearchTokenizable>): AQLFragment {
const fragments: AQLFragment[] = [];
for (let i = 0; i < tokensFiltered.length; i++) {
const value = tokensFiltered[i];
fragments.push(`token_${i}: TOKENS("${value.expression}", "${value.analyzer}")`);
fragments.push(aql`${aql.identifier('token_' + i)}: TOKENS(${value.expression}, ${value.analyzer})`);
}
const query = `RETURN { ${fragments.join(',\n')} }`;
return query;
return aql`RETURN { ${aql.join(fragments, aql`',\n`)} }`;
}
4 changes: 3 additions & 1 deletion src/database/arangodb/arangodb-adapter.ts
Expand Up @@ -718,7 +718,9 @@ export class ArangoDBAdapter implements DatabaseAdapter {
)
);

const cursor = await this.db.query(generateTokenizationQuery(tokenizationsFiltered));
const aqlFragment = generateTokenizationQuery(tokenizationsFiltered);
const queryCode = aqlFragment.getCode();
const cursor = await this.db.query(queryCode.code, queryCode.boundValues);

const result = await cursor.next();
const resultArray: FlexSearchTokenization[] = [];
Expand Down

0 comments on commit 13b9233

Please sign in to comment.