/
full.go
84 lines (78 loc) · 1.4 KB
/
full.go
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
package main
import (
"strings"
)
var replacerSymbols = strings.NewReplacer(
"▾", " ",
"—", "-",
"_", " ",
"─", " ",
",", " ",
"·", " ",
".", " ",
"!", " ",
"?", " ",
":", " ",
";", " ",
"{", " ",
"}", " ",
"[", " ",
"]", " ",
"(", " ",
")", " ",
"=", " ",
"+", " ",
"@", " ",
"#", " ",
"№", " ",
"$", " ",
"%", " ",
"^", " ",
"&", " ",
"*", " ",
"~", " ",
"`", " ",
"'", " ",
"\"", " ",
"\\", " ",
"/", " ",
"|", " ",
"\t", " ",
"\r\n", " ",
"\n", " ",
"<", "",
">", "")
var replacerSymbols2 = strings.NewReplacer(
" -", " ",
"- ", " ",
"--", " ")
var replacerTrim = strings.NewReplacer(
" ", " ",
" ", " ",
" ", " ")
func (index Index) InvertedIndex(key []byte, s string) {
s = replacerSymbols.Replace(s)
s = replacerSymbols2.Replace(s)
s = replacerTrim.Replace(s)
s = replacerTrim.Replace(s)
s = replacerTrim.Replace(s)
s = strings.ToLower(s)
sA := strings.Split(s, " ")
for _, v := range sA {
var vByte []byte = []byte(v)[:8]
var vByte8 [8]byte = byteToByte8(vByte)
if !index.IndexInverted[vByte8] {
index.IndexInverted[vByte8] = true
index.BitmapAdd(append([]byte("s/"), vByte...), byte4UInt32(key))
}
}
}
func (index Index) Search(q string) {
var vByte [8]byte
var x []byte = []byte(q)
copy(vByte[:], x[:8])
if index.IndexInverted[vByte] {
var bitmapName []byte = x[:8]
index.BitmapRead(append([]byte("s/"), bitmapName...))
}
}