MIOLO20
Carregando...
Procurando...
Nenhuma entrada encontrada
misr.class
Ir para a documentação deste ficheiro.
1
<?php
2
class
MISR
3
{
4
var
$conn
;
// connection identifier
5
var
$phonetic
;
6
var
$stopWords
;
7
8
function
__construct
(
$conn
)
9
{
10
$this->conn =
$conn
;
11
$this->phonetic =
new
MPhonetic
();
12
}
13
14
private
function
setStopWords()
15
{
16
$this->stopWords = array
17
(
18
'QUE'
,
19
'PARA'
,
20
'COM'
,
21
'NÃO'
,
22
'UMA'
,
23
'POR'
,
24
'MAIS'
,
25
'DOS'
,
26
'COMO'
,
27
'MAS'
,
28
'FOI'
,
29
'ELE'
,
30
'DAS'
,
31
'TEM'
,
32
'SEU'
,
33
'SUA'
,
34
'SER'
,
35
'QUANDO'
,
36
'MUITO'
,
37
'NOS'
,
38
'ESTÁ'
,
39
'TAMBÉM'
,
40
'PELO'
,
41
'PELA'
,
42
'ATÉ'
,
43
'ISSO'
,
44
'ELA'
,
45
'ENTRE'
,
46
'ERA'
,
47
'DEPOIS'
,
48
'SEM'
,
49
'MESMO'
,
50
'AOS'
,
51
'SEUS'
,
52
'QUEM'
,
53
'NAS'
,
54
'ESSE'
,
55
'ESTÃO'
,
56
'VOCÊ'
,
57
'ESSA'
,
58
'NUM'
,
59
'NEM'
,
60
'SUAS'
,
61
'MEU'
,
62
'MINHA'
,
63
'NUMA'
,
64
'PELOS'
,
65
'ELAS'
,
66
'HAVIA'
,
67
'SEJA'
,
68
'QUAL'
,
69
'NÓS'
,
70
'LHE'
,
71
'DELES'
,
72
'ESSAS'
,
73
'ESSES'
,
74
'PELAS'
,
75
'ESTE'
,
76
'DELE'
,
77
'VOCÊS'
,
78
'VOS'
,
79
'LHES'
,
80
'MEUS'
,
81
'MINHAS'
,
82
'TEU'
,
83
'TUA'
,
84
'TEUS'
,
85
'TUAS'
,
86
'NOSSO'
,
87
'NOSSA'
,
88
'NOSSOS'
,
89
'NOSSAS'
,
90
'DELA'
,
91
'DELAS'
,
92
'ESTA'
,
93
'ESTES'
,
94
'ESTAS'
,
95
'AQUELE'
,
96
'AQUELA'
,
97
'AQUELES'
,
98
'AQUELAS'
,
99
'ISTO'
,
100
'AQUILO'
,
101
'ESTOU'
,
102
'ESTÁ'
,
103
'ESTAMOS'
,
104
'ESTÃO'
,
105
'ESTIVE'
,
106
'ESTEVE'
,
107
'ESTIVEMOS'
,
108
'ESTIVERAM'
,
109
'ESTAVA'
,
110
'ESTÁVAMOS'
,
111
'ESTAVAM'
,
112
'ESTIVERA'
,
113
'ESTIVÉRAMOS'
,
114
'ESTEJA'
,
115
'ESTEJAMOS'
,
116
'ESTEJAM'
,
117
'ESTIVESSE'
,
118
'ESTIVÉSSEMOS'
,
119
'ESTIVESSEM'
,
120
'ESTIVER'
,
121
'ESTIVERMOS'
,
122
'ESTIVEREM'
,
123
'HEI'
,
124
'HAVEMOS'
,
125
'HÃO'
,
126
'HOUVE'
,
127
'HOUVEMOS'
,
128
'HOUVERAM'
,
129
'HOUVERA'
,
130
'HOUVÉRAMOS'
,
131
'HAJA'
,
132
'HAJAMOS'
,
133
'HAJAM'
,
134
'HOUVESSE'
,
135
'HOUVÉSSEMOS'
,
136
'HOUVESSEM'
,
137
'HOUVER'
,
138
'HOUVERMOS'
,
139
'HOUVEREM'
,
140
'HOUVEREI'
,
141
'HOUVERÁ'
,
142
'HOUVEREMOS'
,
143
'HOUVERÃO'
,
144
'HOUVERIA'
,
145
'HOUVERÍAMOS'
,
146
'HOUVERIAM'
,
147
'SOU'
,
148
'SOMOS'
,
149
'SÃO'
,
150
'ERA'
,
151
'ÉRAMOS'
,
152
'ERAM'
,
153
'FUI'
,
154
'FOI'
,
155
'FOMOS'
,
156
'FORAM'
,
157
'FORA'
,
158
'FÔRAMOS'
,
159
'SEJA'
,
160
'SEJAMOS'
,
161
'SEJAM'
,
162
'FOSSE'
,
163
'FÔSSEMOS'
,
164
'FOSSEM'
,
165
'FOR'
,
166
'FORMOS'
,
167
'FOREM'
,
168
'SEREI'
,
169
'SERÁ'
,
170
'SEREMOS'
,
171
'SERÃO'
,
172
'SERIA'
,
173
'SERÍAMOS'
,
174
'SERIAM'
,
175
'TENHO'
,
176
'TEM'
,
177
'TEMOS'
,
178
'TÉM'
,
179
'TINHA'
,
180
'TÍNHAMOS'
,
181
'TINHAM'
,
182
'TIVE'
,
183
'TEVE'
,
184
'TIVEMOS'
,
185
'TIVERAM'
,
186
'TIVERA'
,
187
'TIVÉRAMOS'
,
188
'TENHA'
,
189
'TENHAMOS'
,
190
'TENHAM'
,
191
'TIVESSE'
,
192
'TIVÉSSEMOS'
,
193
'TIVESSEM'
,
194
'TIVER'
,
195
'TIVERMOS'
,
196
'TIVEREM'
,
197
'TEREI'
,
198
'TERÁ'
,
199
'TEREMOS'
,
200
'TERÃO'
,
201
'TERIA'
,
202
'TERÍAMOS'
,
203
'TERIAM'
204
);
205
}
206
207
private
function
isValid($word)
208
{
209
$isValid =
false
;
210
211
if
(strlen($word) > 2)
212
{
213
$isValid = (array_search($word, $this->stopWords) ===
false
);
214
}
215
216
return
$isValid;
217
}
218
219
private
function
getTokens($string, &$array)
220
{
221
$tok = strtok($string,
" "
);
222
223
while
($tok)
224
{
225
$tok = trim($tok);
226
227
if
(strlen($tok) > 2)
228
$array[] = $tok;
229
230
$tok = strtok(
" "
);
231
}
232
}
233
234
function
getIdField
($tableName, $fieldName)
235
{
236
$sql =
new
sql
(
'idField'
,
'ISR_FIELD'
,
'(TableName = ?) and (FieldName = ?)'
);
237
$sql->SetParameters(strtoupper($tableName), strtoupper($fieldName));
238
$query = $this->conn->getQuery($sql);
239
240
if
(!$query->eof)
241
{
242
$idField = $query->fields(
'idfield'
);
243
}
244
else
245
{
246
$db = $this->conn->db;
247
$idField = $db->GETNewId(
'seq_isr_field'
);
248
$sql =
new
sql
(
'idField,TableName,FieldName'
,
'ISR_FIELD'
);
249
$sql->SetParameters($idField, strtoupper($tableName), strtoupper($fieldName));
250
$this->conn->Execute($sql->Insert());
251
}
252
253
return
$idField;
254
}
255
256
function
getIdWord
($word)
257
{
258
$sql =
new
sql
(
'idWord'
,
'ISR_WORD'
,
"(word = '$word')"
);
259
$query = $this->conn->getQuery($sql);
260
261
if
(!$query->eof)
262
{
263
$idWord = $query->fields(
'idWord'
);
264
}
265
else
266
{
267
$db = $this->conn->db;
268
$idWord = $db->GETNewId(
'seq_isr_word'
);
269
$sql =
new
sql
(
'idWord,Word'
,
'ISR_WORD'
);
270
$sql->SetParameters($idWord, $word);
271
$this->conn->Execute($sql->Insert());
272
}
273
274
return
$idWord;
275
}
276
277
function
getIdWordFono
($word)
278
{
279
$fonoWord = $this->
fonetize
($word);
280
$sql =
new
sql
(
'idWord'
,
'ISR_WORDFONO'
,
"(word = '$fonoWord')"
);
281
$query = $this->conn->getQuery($sql);
282
283
if
(!$query->eof)
284
{
285
$idWord = $query->fields(
'idWord'
);
286
}
287
else
288
{
289
$db = $this->conn->db;
290
$idWord = $db->GETNewId(
'seq_isr_word'
);
291
$sql =
new
sql
(
'idWord,Word'
,
'ISR_WORDFONO'
);
292
$sql->SetParameters($idWord, $fonoWord);
293
$this->conn->Execute($sql->Insert());
294
}
295
296
return
$idWord;
297
}
298
299
function
indexer
($tableName, $fieldname, $pk, $phrase, $fono =
true
)
300
{
301
$this->setStopWords();
302
$idField = $this->
getIdField
($tableName, $fieldname);
303
$this->getTokens($phrase, $words);
304
$n = count($words);
305
306
for
($i = 0; $i < $n; $i++)
307
{
308
$word = strtoupper(trim($words[$i]));
309
310
if
($this->isValid($word))
311
{
312
$idWord = $this->
getIdWord
($word);
313
$sql =
new
sql
(
'idField, idWord, PK'
,
'ISR_INDEX'
);
314
$sql->SetParameters($idField, $idWord, $pk);
315
$this->conn->Execute($sql->Insert());
316
317
if
($fono)
318
{
319
$idWord = $this->
getIdWordFono
($word);
320
$sql =
new
sql
(
'idField, idWord, PK'
,
'ISR_INDEXFONO'
);
321
$sql->SetParameters($idField, $idWord, $pk);
322
$this->conn->Execute($sql->Insert());
323
}
324
}
325
}
326
}
327
328
function
delete
($tableName, $fieldname, $pk)
329
{
330
$idField = $this->
getIdField
($tableName, $fieldname);
331
$sql =
new
sql
(
''
,
'ISR_INDEX'
,
'(idField = ?) and (pk = ?)'
);
332
$sql->SetParameters($idField, $pk);
333
$this->conn->Execute($sql->Delete());
334
}
335
336
function
retrieve
($tableName, $fieldName, $phrase, $key, $fields =
'*'
, $fono =
true
)
337
{
338
$phrase = trim(strtoupper($phrase));
339
$phrase = $this->phonetic->removeMultiple($phrase);
340
$phrase = $this->phonetic->removeStrange($phrase);
341
$phrase = $this->phonetic->removeAccentuation($phrase);
342
343
$idField = $this->
getIdField
($tableName, $fieldName);
344
$phrase .=
' '
;
345
$n = strlen($phrase);
346
$w =
''
;
347
$cmd =
''
;
348
349
for
($i = 0; $i < $n; $i++)
350
{
351
$c = $phrase{$i};
352
if
($c == chr(32))
353
{
354
if
($w !=
''
)
355
{
356
if
(strlen($w) < 3)
357
{
358
if
(($w ==
'OU'
) || ($w ==
'E'
))
359
$last = $w;
360
else
361
$w =
''
;
362
}
363
else
364
{
365
$word = str_replace(
'('
,
''
, str_replace(
')'
,
''
, $w));
366
if
($fono)
367
{
368
$wordfono = $this->
fonetize
($word);
369
$idWord = $this->
getIdWordFono
($wordfono);
370
$w = str_replace($word,
"select PK from ISR_INDEXFONO where (IdWord = $idWord) and (IdField = $idField )"
, $w);
371
}
372
else
373
{
374
$idWord = $this->
getIdWord
($word);
375
$w = str_replace($word,
"select PK from ISR_INDEX where (IdWord = $idWord) and (IdField = $idField )"
, $w);
376
}
377
378
$last = $w = (($last !=
'E'
) && ($last !=
'OU'
) && strlen($cmd)) ?
"E ($w)"
:
"($w)"
;
379
}
380
$cmd .=
" $w "
;
381
$w =
''
;
382
}
383
}
384
else
385
$w .= $c;
386
}
387
388
$cmd = str_replace(
' OU '
,
' UNION '
, $cmd);
389
$cmd = str_replace(
' E '
,
' INTERSECT '
, $cmd);
390
$query = $this->conn->getQueryCommand($cmd);
391
$check = $query->chunkResult(0, 0);
392
$n = 0;
393
$s =
''
;
394
$cmd =
''
;
395
foreach
($check as $pk)
396
{
397
$s .= (($s !=
''
) ?
','
:
''
) .
"'$pk'"
;
398
399
if
($n++ == 100)
400
{
401
$cmd .= (($cmd !=
''
) ?
' UNION '
:
''
) .
"select $fields from $tableName where $key in ($s)"
;
402
$n = 0;
403
$s =
''
;
404
}
405
}
406
if
($n != 0)
407
{
408
$cmd .= (($cmd !=
''
) ?
' UNION '
:
''
) .
"select $fields from $tableName where $key in ($s)"
;
409
}
410
if
($cmd ==
''
)
411
$cmd =
"select $fields from $tableName where $key in ('')"
;
412
$q = $this->conn->getQueryCommand($cmd);
413
return
$q;
414
}
415
416
function
fonetize
($word)
417
{
418
return
$this->phonetic->fonetize($word);
419
}
420
}
421
?>
MISR
Definição
misr.class:3
MISR\$stopWords
$stopWords
Definição
misr.class:6
MISR\getIdField
getIdField($tableName, $fieldName)
Definição
misr.class:234
MISR\fonetize
fonetize($word)
Definição
misr.class:416
MISR\retrieve
retrieve($tableName, $fieldName, $phrase, $key, $fields=' *', $fono=true)
Definição
misr.class:336
MISR\$phonetic
$phonetic
Definição
misr.class:5
MISR\getIdWordFono
getIdWordFono($word)
Definição
misr.class:277
MISR\__construct
__construct($conn)
Definição
misr.class:8
MISR\$conn
$conn
Definição
misr.class:4
MISR\indexer
indexer($tableName, $fieldname, $pk, $phrase, $fono=true)
Definição
misr.class:299
MISR\getIdWord
getIdWord($word)
Definição
misr.class:256
MPhonetic
Definição
mphonetic.class:3
sql
Definição
compatibility.class:18
classes
database
misr.class
Gerado por
1.10.0