- Timestamp:
- Aug 30, 2008, 9:34:39 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.19_branch/NewView/TextSearchQuery.pas
r116 r331 29 29 CombineMethod: TSearchTermCombineMethod; 30 30 31 constructor Create( const TheText: string;32 const TheCombineMethod: TSearchTermCombineMethod );31 constructor Create( const aText: string; 32 const aCombineMethod: TSearchTermCombineMethod ); 33 33 destructor Destroy; override; 34 35 function AsLogText: String; 34 36 end; 35 37 … … 40 42 function GetTermCount: longint; 41 43 public 42 constructor Create( const SearchString: string);44 constructor Create(const aSearchString: String); 43 45 destructor Destroy; override; 44 46 45 47 property Term[ Index: longint ]: TSearchTerm read GetTerm; 46 48 property TermCount: longint read GetTermCount; 49 50 procedure Log; 47 51 end; 48 52 … … 63 67 const Apply: boolean ); 64 68 begin 65 66 69 Language.Prefix := 'SearchQuery.'; 67 70 Language.LL( Apply, QueryErrorMissingWord1, 'QueryErrorMissingWord1', 'No search word given after ' ); … … 69 72 end; 70 73 71 constructor TTextSearchQuery.Create( const SearchString: string ); 72 var 73 TermText: string; 74 CombineMethod: TSearchTermCombineMethod; 74 75 constructor TTextSearchQuery.Create(const aSearchString: string); 76 var 77 tmpTermText: string; 78 tmpCombineMethod: TSearchTermCombineMethod; 75 79 Term: TSearchTerm; 76 80 tmpTerms : TStringList; … … 80 84 try 81 85 tmpTerms := TStringList.Create; 82 StrExtractStringsQuoted(tmpTerms, SearchString);86 StrExtractStringsQuoted(tmpTerms, aSearchString); 83 87 84 88 for i := 0 to tmpTerms.count-1 do 85 89 begin 86 TermText := tmpTerms[i];90 tmpTermText := tmpTerms[i]; 87 91 88 92 // Check for modifiers: 89 93 // + word must be matched 90 94 // - word must not be matched 91 case TermText[ 1 ] of95 case tmpTermText[ 1 ] of 92 96 '+': 93 CombineMethod := cmRequired;97 tmpCombineMethod := cmRequired; 94 98 '-': 95 CombineMethod := cmExcluded;99 tmpCombineMethod := cmExcluded; 96 100 else 97 CombineMethod := cmOptional;101 tmpCombineMethod := cmOptional; 98 102 end; 99 103 100 if CombineMethod <> cmOptional then104 if tmpCombineMethod <> cmOptional then 101 105 begin 102 106 // delete + or - 103 if Length( TermText ) = 1 then107 if Length( tmpTermText ) = 1 then 104 108 if (i < tmpTerms.count-1) then 105 109 raise ESearchSyntaxError.Create( QueryErrorMissingWord1 106 + StrInDoubleQuotes( TermText)110 + StrInDoubleQuotes(tmpTermText) 107 111 + QueryErrorMissingWord2 108 112 + StrInDoubleQuotes(tmpTerms[i+1]) ) 109 113 else 110 114 raise ESearchSyntaxError.Create( QueryErrorMissingWord1 111 + StrInDoubleQuotes( TermText));112 Delete( TermText, 1, 1 );115 + StrInDoubleQuotes(tmpTermText)); 116 Delete( tmpTermText, 1, 1 ); 113 117 end; 114 118 115 Term := TSearchTerm.Create( TermText, 116 CombineMethod ); 119 Term := TSearchTerm.Create( tmpTermText, tmpCombineMethod ); 117 120 Terms.Add( Term ); 118 121 end; … … 125 128 end; 126 129 130 127 131 destructor TTextSearchQuery.Destroy; 128 132 begin … … 131 135 end; 132 136 137 138 function TSearchTerm.AsLogText: String; 139 var 140 i : integer; 141 begin 142 result := 'TSearchTerm: ''' + text + ''' (' + IntToStr(Parts.Count) + ' parts; '; 143 144 case CombineMethod of 145 cmRequired : 146 result := result + 'cmRequired'; 147 cmExcluded : 148 result := result + 'cmExcluded'; 149 cmOptional : 150 result := result + 'cmOptional'; 151 end; 152 153 result := result + ')'; 154 end; 155 156 157 133 158 function TTextSearchQuery.GetTerm( index: longint ): TSearchTerm; 134 159 begin … … 136 161 end; 137 162 163 138 164 function TTextSearchQuery.GetTermCount: longint; 139 165 begin … … 141 167 end; 142 168 143 constructor TSearchTerm.Create( const TheText: string; 144 const TheCombineMethod: TSearchTermCombineMethod ); 169 170 constructor TSearchTerm.Create( const aText: string; 171 const aCombineMethod: TSearchTermCombineMethod ); 145 172 var 146 173 TermParseIndex: longint; … … 150 177 Parts := TStringList.Create; 151 178 152 Text := TheText;153 CombineMethod := TheCombineMethod;179 Text := aText; 180 CombineMethod := aCombineMethod; 154 181 155 182 // Break out each part of the term as IPF does: … … 204 231 end; 205 232 233 234 procedure TTextSearchQuery.Log; 235 var 236 i : longint; 237 begin 238 if IsLogAspectsEnabled(LogSearch) then 239 begin 240 LogEvent(LogSearch, ' TTextSearchQuery:'); 241 242 for i := 0 to TermCount - 1 do 243 begin 244 LogEvent(LogSearch, ' Term ' + IntToStr(0) + ' [' + Term[i].AsLogText + ']'); 245 end; 246 end; 247 end; 248 249 250 206 251 Initialization 207 252 RegisterProcForLanguages( OnLanguageEvent );
Note:
See TracChangeset
for help on using the changeset viewer.