-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsearch.php
110 lines (96 loc) · 2.4 KB
/
search.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php
include "mysql.php";
if (($userq = $conn->real_escape_string($_POST['q'])) == "") {
$res = array();
$query = "SELECT id, exttype, title,preview FROM notes WHERE approved = 1 ORDER BY dl DESC LIMIT 30";
$q = $conn->query($query);
if ($q->num_rows != 0) {
while ($r = $q->fetch_assoc()) {
$res[] = $r;
}
echo json_encode($res);
die();
}
else {
echo json_encode("No Notes Here");
die();
}
}
$globalcount = 0;
$query = "SELECT id,dl FROM notes WHERE title LIKE '%$userq%' ";
$scorearr = array();
$qarr = array();
function verify($var) {
if ($var != "0") return true;
else return false;
}
function addToArr($key, $word) {
global $qarr;
if (verify($word)) {
$qarr[] = "$key = $word";
return $word;
}
else return "";
}
function addScore($id,$score) {
global $scorearr;
if (!isset($scorearr[$id])) {
$scorearr[$id] = $score;
}
else {
$scorearr[$id] += $score;
}
}
$usersch = addToArr("sch",$conn->real_escape_string($_POST['sch']));
$userlvl = addToArr("lvl",$conn->real_escape_string($_POST['lvl']));
$usersubj = addToArr("subj",$conn->real_escape_string($_POST['subj']));
if (count($qarr) != 0) {
$t = implode(" AND ", $qarr);
$query .= " AND " .$t;
}
$q = $conn->query($query);
if ($q->num_rows != 0) {
while ($r = $q->fetch_assoc()) {
$id = $r['id'];
$occ = $r['dl'];
addScore($id, 5+$occ/200);
}
}
$qarr = array();
addToArr("notes.sch",$usersch);
addToArr("notes.lvl",$userlvl);
addToArr("notes.subj",$usersubj);
if (count($qarr) != 0) {
$t = implode(" AND ", $qarr);
}
$warr = explode(" ", $userq);
foreach ($warr as $x) {
$query = "SELECT indextable.notesid, indextable.occurrence
FROM indextable INNER JOIN notes ON indextable.notesid = notes.id
WHERE indextable.word = '$x' ";
if (isset($t)) {$query .= " AND " . $t; }
$q = $conn->query($query);
if ($q->num_rows != 0) {
while ($r = $q->fetch_assoc()) {
$id = $r['indextable.notesid'];
$occ = $r['indextable.occurrence'];
addScore($id, 1 + $occ/100);
}
}
}
$i = 0;
arsort($scorearr);
$res = array();
foreach($scorearr as $v=>$k) {
if ($i == 30 || $k <= 0) break;
$q = $conn->query("SELECT id, exttype, title,preview FROM notes WHERE approved = 1 AND id = $v");
$r = $q->fetch_assoc();
$res[] = $r;
$i++;
}
if (empty($res)) {
echo "No Notes Here";
die();
}
echo json_encode($res);
?>