@@ -120,6 +120,7 @@ async function ensureStatuteCollection(lang: string): Promise<string> {
120120 { name : "paragraphs" , type : "string[]" , locale : lang_short } ,
121121 { name : "has_content" , type : "int32" } ,
122122 ] ,
123+ token_separators : [ "-" ] ,
123124 } ;
124125
125126 try {
@@ -150,8 +151,7 @@ async function ensureJudgmentCollection(lang: string): Promise<string> {
150151 { name : "keywords" , type : "string[]" , locale : lang_short } ,
151152 { name : "headings" , type : "string[]" , locale : lang_short } ,
152153 { name : "paragraphs" , type : "string[]" , locale : lang_short } ,
153- { name : "has_content" , type : "int32" } ,
154- ] ,
154+ { name : "has_content" , type : "int32" } , ] ,
155155 } ;
156156
157157 try {
@@ -524,11 +524,19 @@ export async function deleteCollection(name: string, lang: string) {
524524 }
525525}
526526
527-
527+ function normalizeQuery ( q : string ) : string {
528+ return q
529+ . toLowerCase ( )
530+ . replace ( / \p{ Punctuation} + / gu, ' ' )
531+ . replace ( / \s + / g, ' ' )
532+ . trim ( ) ;
533+ }
528534
529535export async function searchStatutes ( lang : string , queryStr : string ) : Promise < StatuteSearchResult [ ] > {
536+ const normalizedQ = normalizeQuery ( queryStr ) ;
537+
530538 const searchParameters : any = {
531- q : queryStr ,
539+ q : normalizedQ ,
532540 query_by : "title,common_names,keywords,headings,year,number,paragraphs" ,
533541 query_by_weights : "50,49,48,20,15,10,1" ,
534542 prefix : "true" ,
@@ -547,10 +555,11 @@ export async function searchStatutes(lang: string, queryStr: string): Promise<St
547555 return searchResults . hits ?. map ( ( hit ) => ( hit . document as StatuteSearchResult ) ) || [ ] ;
548556}
549557
550-
551558export async function searchJudgments ( lang : string , queryStr : string , level : string ) : Promise < JudgmentSearchResult [ ] > {
559+ const normalizedQ = normalizeQuery ( queryStr ) ;
560+
552561 const searchParameters : any = {
553- q : queryStr ,
562+ q : normalizedQ ,
554563 query_by : "keywords,level,year,number,headings,paragraphs" ,
555564 query_by_weights : "60,50,49,48,10,1" ,
556565 prefix : "true" ,
@@ -560,6 +569,7 @@ export async function searchJudgments(lang: string, queryStr: string, level: str
560569 per_page : 20 ,
561570 include_fields : "year_num,number,level,has_content,keywords" ,
562571 } ;
572+
563573 if ( level !== "any" ) {
564574 searchParameters . filter_by = `level:0${ localeLevel ( level , lang ) } ` ;
565575 }
@@ -572,6 +582,6 @@ export async function searchJudgments(lang: string, queryStr: string, level: str
572582 return searchResults . hits ?. map ( ( hit ) => {
573583 const doc = hit . document as JudgmentSearchResult ;
574584 doc . level = localeLevelInverse ( doc . level ) ;
575- return hit . document as JudgmentSearchResult
585+ return doc ;
576586 } ) || [ ] ;
577587}
0 commit comments