melisa 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/melisa +1 -1
- data/ext/extconf.rb +1 -2
- data/ext/marisa-0.2.4/mkmf.log +27 -27
- data/lib/melisa/bytes_trie.rb +1 -1
- data/lib/melisa/trie.rb +9 -1
- data/lib/melisa/version.rb +1 -1
- data/spec/bytes_trie_spec.rb +3 -3
- metadata +2 -26
- data/ext/marisa-0.2.4/pkg/bin/marisa-benchmark +0 -0
- data/ext/marisa-0.2.4/pkg/bin/marisa-build +0 -0
- data/ext/marisa-0.2.4/pkg/bin/marisa-common-prefix-search +0 -0
- data/ext/marisa-0.2.4/pkg/bin/marisa-dump +0 -0
- data/ext/marisa-0.2.4/pkg/bin/marisa-lookup +0 -0
- data/ext/marisa-0.2.4/pkg/bin/marisa-predictive-search +0 -0
- data/ext/marisa-0.2.4/pkg/bin/marisa-reverse-lookup +0 -0
- data/ext/marisa-0.2.4/pkg/include/marisa.h +0 -14
- data/ext/marisa-0.2.4/pkg/include/marisa/agent.h +0 -73
- data/ext/marisa-0.2.4/pkg/include/marisa/base.h +0 -193
- data/ext/marisa-0.2.4/pkg/include/marisa/exception.h +0 -82
- data/ext/marisa-0.2.4/pkg/include/marisa/iostream.h +0 -18
- data/ext/marisa-0.2.4/pkg/include/marisa/key.h +0 -85
- data/ext/marisa-0.2.4/pkg/include/marisa/keyset.h +0 -80
- data/ext/marisa-0.2.4/pkg/include/marisa/query.h +0 -71
- data/ext/marisa-0.2.4/pkg/include/marisa/scoped-array.h +0 -48
- data/ext/marisa-0.2.4/pkg/include/marisa/scoped-ptr.h +0 -52
- data/ext/marisa-0.2.4/pkg/include/marisa/stdio.h +0 -15
- data/ext/marisa-0.2.4/pkg/include/marisa/trie.h +0 -64
- data/ext/marisa-0.2.4/pkg/lib/libmarisa.0.dylib +0 -0
- data/ext/marisa-0.2.4/pkg/lib/libmarisa.a +0 -0
- data/ext/marisa-0.2.4/pkg/lib/libmarisa.dylib +0 -0
- data/ext/marisa-0.2.4/pkg/lib/libmarisa.la +0 -41
- data/ext/marisa-0.2.4/pkg/lib/pkgconfig/marisa.pc +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 296663b7acc8e5049b755fce207a1df657b5fd82
|
4
|
+
data.tar.gz: ca5cfaf23076e952cc58b6ee2bc086f5c3ccb8b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2107658429a570ad56ea3226e15c0d39d150c76ca89991ac602f19cc371e4e929e4df166a4c42739074055b480e588da17c29173eadac96dc233cf48f94b5f90
|
7
|
+
data.tar.gz: 61a4141ddfdc3fc3d360796c52183dd1dd229d0e5273ff1ef2213b9d0f40ce8a0eb6a1d37ff1d703e687e22f470caf1a614ac01d42b4378a4901a0261f2c4d42
|
data/bin/melisa
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'open3'
|
3
3
|
|
4
|
-
BIN_PATH = File.join(File.dirname(__FILE__), '..', 'ext', 'pkg', 'bin')
|
4
|
+
BIN_PATH = File.join(File.dirname(__FILE__), '..', 'ext', 'marisa-0.2.4', 'pkg', 'bin')
|
5
5
|
|
6
6
|
available_commands = %w(lookup reverse-lookup predictive-search benchmark build common-prefix-search dump)
|
7
7
|
|
data/ext/extconf.rb
CHANGED
@@ -17,9 +17,8 @@ if `which make`.strip.empty?
|
|
17
17
|
exit(1)
|
18
18
|
end
|
19
19
|
|
20
|
-
MELISA_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
21
20
|
MARISA_ROOT = File.expand_path(File.join(File.dirname(__FILE__), "marisa-0.2.4"))
|
22
|
-
PREFIX = File.join(
|
21
|
+
PREFIX = File.join(MARISA_ROOT, 'pkg')
|
23
22
|
|
24
23
|
FileUtils.cd(MARISA_ROOT) do
|
25
24
|
sys "./configure --enable-sse3 --prefix='#{PREFIX}'"
|
data/ext/marisa-0.2.4/mkmf.log
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
"./configure --enable-sse3 --prefix='/Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
1
|
+
"./configure --enable-sse3 --prefix='/Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg'"
|
2
2
|
checking for a BSD-compatible install... /usr/bin/install -c
|
3
3
|
checking whether build environment is sane... yes
|
4
4
|
checking for a thread-safe mkdir -p... ./install-sh -c -d
|
@@ -121,7 +121,7 @@ marisa 0.2.4 configuration:
|
|
121
121
|
CXX: g++
|
122
122
|
CXXFLAGS: -g -O2 -DMARISA_USE_SSE3 -msse3
|
123
123
|
LDFLAGS:
|
124
|
-
PREFIX: /Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
124
|
+
PREFIX: /Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg
|
125
125
|
|
126
126
|
SSE2: yes
|
127
127
|
SSE3: yes
|
@@ -169,24 +169,24 @@ mv -f .deps/tail.Tpo .deps/tail.Plo
|
|
169
169
|
libtool: compile: g++ -DPACKAGE_NAME=\"marisa\" -DPACKAGE_TARNAME=\"marisa\" -DPACKAGE_VERSION=\"0.2.4\" "-DPACKAGE_STRING=\"marisa 0.2.4\"" -DPACKAGE_BUGREPORT=\"syata@acm.org\" -DPACKAGE_URL=\"\" -DPACKAGE=\"marisa\" -DVERSION=\"0.2.4\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -Wall -Weffc++ -Wextra -g -O2 -DMARISA_USE_SSE3 -msse3 -MT louds-trie.lo -MD -MP -MF .deps/louds-trie.Tpo -c marisa/grimoire/trie/louds-trie.cc -fno-common -DPIC -o .libs/louds-trie.o
|
170
170
|
libtool: compile: g++ -DPACKAGE_NAME=\"marisa\" -DPACKAGE_TARNAME=\"marisa\" -DPACKAGE_VERSION=\"0.2.4\" "-DPACKAGE_STRING=\"marisa 0.2.4\"" -DPACKAGE_BUGREPORT=\"syata@acm.org\" -DPACKAGE_URL=\"\" -DPACKAGE=\"marisa\" -DVERSION=\"0.2.4\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -Wall -Weffc++ -Wextra -g -O2 -DMARISA_USE_SSE3 -msse3 -MT louds-trie.lo -MD -MP -MF .deps/louds-trie.Tpo -c marisa/grimoire/trie/louds-trie.cc -o louds-trie.o >/dev/null 2>&1
|
171
171
|
mv -f .deps/louds-trie.Tpo .deps/louds-trie.Plo
|
172
|
-
/bin/sh ../libtool --tag=CXX --mode=link g++ -Wall -Weffc++ -Wextra -g -O2 -DMARISA_USE_SSE3 -msse3 -o libmarisa.la -rpath /Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
173
|
-
libtool: link: g++ -dynamiclib -Wl,-undefined -Wl,dynamic_lookup -o .libs/libmarisa.0.dylib .libs/keyset.o .libs/agent.o .libs/trie.o .libs/mapper.o .libs/reader.o .libs/writer.o .libs/bit-vector.o .libs/tail.o .libs/louds-trie.o -O2 -msse3 -install_name /Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
172
|
+
/bin/sh ../libtool --tag=CXX --mode=link g++ -Wall -Weffc++ -Wextra -g -O2 -DMARISA_USE_SSE3 -msse3 -o libmarisa.la -rpath /Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/lib keyset.lo agent.lo trie.lo mapper.lo reader.lo writer.lo bit-vector.lo tail.lo louds-trie.lo
|
173
|
+
libtool: link: g++ -dynamiclib -Wl,-undefined -Wl,dynamic_lookup -o .libs/libmarisa.0.dylib .libs/keyset.o .libs/agent.o .libs/trie.o .libs/mapper.o .libs/reader.o .libs/writer.o .libs/bit-vector.o .libs/tail.o .libs/louds-trie.o -O2 -msse3 -install_name /Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/lib/libmarisa.0.dylib -compatibility_version 1 -current_version 1.0 -Wl,-single_module
|
174
174
|
libtool: link: (cd ".libs" && rm -f "libmarisa.dylib" && ln -s "libmarisa.0.dylib" "libmarisa.dylib")
|
175
175
|
libtool: link: ar cru .libs/libmarisa.a keyset.o agent.o trie.o mapper.o reader.o writer.o bit-vector.o tail.o louds-trie.o
|
176
176
|
libtool: link: ranlib .libs/libmarisa.a
|
177
177
|
libtool: link: ( cd ".libs" && rm -f "libmarisa.la" && ln -s "../libmarisa.la" "libmarisa.la" )
|
178
|
-
test -z "/Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
179
|
-
/bin/sh ../libtool --mode=install /usr/bin/install -c libmarisa.la '/Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
180
|
-
libtool: install: /usr/bin/install -c .libs/libmarisa.0.dylib /Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
181
|
-
libtool: install: (cd /Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
182
|
-
libtool: install: /usr/bin/install -c .libs/libmarisa.lai /Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
183
|
-
libtool: install: /usr/bin/install -c .libs/libmarisa.a /Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
184
|
-
libtool: install: chmod 644 /Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
185
|
-
libtool: install: ranlib /Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
186
|
-
test -z "/Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
187
|
-
/usr/bin/install -c -m 644 marisa.h '/Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
188
|
-
test -z "/Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
189
|
-
/usr/bin/install -c -m 644 marisa/base.h marisa/exception.h marisa/scoped-ptr.h marisa/scoped-array.h marisa/key.h marisa/keyset.h marisa/query.h marisa/agent.h marisa/stdio.h marisa/iostream.h marisa/trie.h '/Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
178
|
+
test -z "/Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/lib" || .././install-sh -c -d "/Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/lib"
|
179
|
+
/bin/sh ../libtool --mode=install /usr/bin/install -c libmarisa.la '/Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/lib'
|
180
|
+
libtool: install: /usr/bin/install -c .libs/libmarisa.0.dylib /Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/lib/libmarisa.0.dylib
|
181
|
+
libtool: install: (cd /Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/lib && { ln -s -f libmarisa.0.dylib libmarisa.dylib || { rm -f libmarisa.dylib && ln -s libmarisa.0.dylib libmarisa.dylib; }; })
|
182
|
+
libtool: install: /usr/bin/install -c .libs/libmarisa.lai /Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/lib/libmarisa.la
|
183
|
+
libtool: install: /usr/bin/install -c .libs/libmarisa.a /Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/lib/libmarisa.a
|
184
|
+
libtool: install: chmod 644 /Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/lib/libmarisa.a
|
185
|
+
libtool: install: ranlib /Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/lib/libmarisa.a
|
186
|
+
test -z "/Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/include" || .././install-sh -c -d "/Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/include"
|
187
|
+
/usr/bin/install -c -m 644 marisa.h '/Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/include'
|
188
|
+
test -z "/Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/include/marisa" || .././install-sh -c -d "/Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/include/marisa"
|
189
|
+
/usr/bin/install -c -m 644 marisa/base.h marisa/exception.h marisa/scoped-ptr.h marisa/scoped-array.h marisa/key.h marisa/keyset.h marisa/query.h marisa/agent.h marisa/stdio.h marisa/iostream.h marisa/trie.h '/Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/include/marisa'
|
190
190
|
Making install in tools
|
191
191
|
/bin/sh ../libtool --tag=CXX --mode=compile g++ -DPACKAGE_NAME=\"marisa\" -DPACKAGE_TARNAME=\"marisa\" -DPACKAGE_VERSION=\"0.2.4\" -DPACKAGE_STRING=\"marisa\ 0.2.4\" -DPACKAGE_BUGREPORT=\"syata@acm.org\" -DPACKAGE_URL=\"\" -DPACKAGE=\"marisa\" -DVERSION=\"0.2.4\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -Wall -Weffc++ -Wextra -I../lib -g -O2 -DMARISA_USE_SSE3 -msse3 -MT cmdopt.lo -MD -MP -MF .deps/cmdopt.Tpo -c -o cmdopt.lo cmdopt.cc
|
192
192
|
libtool: compile: g++ -DPACKAGE_NAME=\"marisa\" -DPACKAGE_TARNAME=\"marisa\" -DPACKAGE_VERSION=\"0.2.4\" "-DPACKAGE_STRING=\"marisa 0.2.4\"" -DPACKAGE_BUGREPORT=\"syata@acm.org\" -DPACKAGE_URL=\"\" -DPACKAGE=\"marisa\" -DVERSION=\"0.2.4\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -Wall -Weffc++ -Wextra -I../lib -g -O2 -DMARISA_USE_SSE3 -msse3 -MT cmdopt.lo -MD -MP -MF .deps/cmdopt.Tpo -c cmdopt.cc -fno-common -DPIC -o .libs/cmdopt.o
|
@@ -224,22 +224,22 @@ g++ -DPACKAGE_NAME=\"marisa\" -DPACKAGE_TARNAME=\"marisa\" -DPACKAGE_VERSION=\"0
|
|
224
224
|
mv -f .deps/marisa-benchmark.Tpo .deps/marisa-benchmark.Po
|
225
225
|
/bin/sh ../libtool --tag=CXX --mode=link g++ -Wall -Weffc++ -Wextra -I../lib -g -O2 -DMARISA_USE_SSE3 -msse3 -o marisa-benchmark marisa-benchmark.o ../lib/libmarisa.la libcmdopt.la
|
226
226
|
libtool: link: g++ -Wall -Weffc++ -Wextra -I../lib -g -O2 -DMARISA_USE_SSE3 -msse3 -o .libs/marisa-benchmark marisa-benchmark.o -Wl,-bind_at_load ../lib/.libs/libmarisa.dylib ./.libs/libcmdopt.a
|
227
|
-
test -z "/Users/duane/Dropbox/Projects/wordtree/melisa/bin" || .././install-sh -c -d "/Users/duane/Dropbox/Projects/wordtree/melisa/bin"
|
228
|
-
/bin/sh ../libtool --mode=install /usr/bin/install -c marisa-build marisa-lookup marisa-reverse-lookup marisa-common-prefix-search marisa-predictive-search marisa-dump marisa-benchmark '/Users/duane/Dropbox/Projects/wordtree/melisa/bin'
|
229
|
-
libtool: install: /usr/bin/install -c .libs/marisa-build /Users/duane/Dropbox/Projects/wordtree/melisa/bin/marisa-build
|
230
|
-
libtool: install: /usr/bin/install -c .libs/marisa-lookup /Users/duane/Dropbox/Projects/wordtree/melisa/bin/marisa-lookup
|
231
|
-
libtool: install: /usr/bin/install -c .libs/marisa-reverse-lookup /Users/duane/Dropbox/Projects/wordtree/melisa/bin/marisa-reverse-lookup
|
232
|
-
libtool: install: /usr/bin/install -c .libs/marisa-common-prefix-search /Users/duane/Dropbox/Projects/wordtree/melisa/bin/marisa-common-prefix-search
|
233
|
-
libtool: install: /usr/bin/install -c .libs/marisa-predictive-search /Users/duane/Dropbox/Projects/wordtree/melisa/bin/marisa-predictive-search
|
234
|
-
libtool: install: /usr/bin/install -c .libs/marisa-dump /Users/duane/Dropbox/Projects/wordtree/melisa/bin/marisa-dump
|
235
|
-
libtool: install: /usr/bin/install -c .libs/marisa-benchmark /Users/duane/Dropbox/Projects/wordtree/melisa/bin/marisa-benchmark
|
227
|
+
test -z "/Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/bin" || .././install-sh -c -d "/Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/bin"
|
228
|
+
/bin/sh ../libtool --mode=install /usr/bin/install -c marisa-build marisa-lookup marisa-reverse-lookup marisa-common-prefix-search marisa-predictive-search marisa-dump marisa-benchmark '/Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/bin'
|
229
|
+
libtool: install: /usr/bin/install -c .libs/marisa-build /Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/bin/marisa-build
|
230
|
+
libtool: install: /usr/bin/install -c .libs/marisa-lookup /Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/bin/marisa-lookup
|
231
|
+
libtool: install: /usr/bin/install -c .libs/marisa-reverse-lookup /Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/bin/marisa-reverse-lookup
|
232
|
+
libtool: install: /usr/bin/install -c .libs/marisa-common-prefix-search /Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/bin/marisa-common-prefix-search
|
233
|
+
libtool: install: /usr/bin/install -c .libs/marisa-predictive-search /Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/bin/marisa-predictive-search
|
234
|
+
libtool: install: /usr/bin/install -c .libs/marisa-dump /Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/bin/marisa-dump
|
235
|
+
libtool: install: /usr/bin/install -c .libs/marisa-benchmark /Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/bin/marisa-benchmark
|
236
236
|
make[2]: Nothing to be done for `install-data-am'.
|
237
237
|
Making install in tests
|
238
238
|
make[2]: Nothing to be done for `install-exec-am'.
|
239
239
|
make[2]: Nothing to be done for `install-data-am'.
|
240
240
|
make[2]: Nothing to be done for `install-exec-am'.
|
241
|
-
test -z "/Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
242
|
-
/usr/bin/install -c -m 644 marisa.pc '/Users/duane/Dropbox/Projects/wordtree/melisa/ext/
|
241
|
+
test -z "/Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/lib/pkgconfig" || ./install-sh -c -d "/Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/lib/pkgconfig"
|
242
|
+
/usr/bin/install -c -m 644 marisa.pc '/Users/duane/Dropbox/Projects/wordtree/melisa/ext/pkg/lib/pkgconfig'
|
243
243
|
"make distclean"
|
244
244
|
Making distclean in tests
|
245
245
|
rm -f base-test io-test vector-test trie-test marisa-test
|
data/lib/melisa/bytes_trie.rb
CHANGED
data/lib/melisa/trie.rb
CHANGED
@@ -52,6 +52,7 @@ module Melisa
|
|
52
52
|
alias :<< :add
|
53
53
|
|
54
54
|
def add_many(keys, weights)
|
55
|
+
raise ImmutableError, "Can't add keys, Trie already built" if @built
|
55
56
|
for key, weight in keys.zip(weights)
|
56
57
|
push(key, weight)
|
57
58
|
end
|
@@ -64,6 +65,13 @@ module Melisa
|
|
64
65
|
agent.key_id if agent.key_str
|
65
66
|
end
|
66
67
|
|
68
|
+
def get_weight(key)
|
69
|
+
build_if_necessary
|
70
|
+
agent.set_query(key)
|
71
|
+
trie.lookup(agent)
|
72
|
+
agent.key.weight if agent.key_str
|
73
|
+
end
|
74
|
+
|
67
75
|
def get_key(id)
|
68
76
|
build_if_necessary
|
69
77
|
agent.set_query(id)
|
@@ -118,7 +126,7 @@ module Melisa
|
|
118
126
|
|
119
127
|
def push(key, weight=nil)
|
120
128
|
if weight
|
121
|
-
@keyset.push_back(key
|
129
|
+
@keyset.push_back(key, weight)
|
122
130
|
else
|
123
131
|
@keyset.push_back(key)
|
124
132
|
end
|
data/lib/melisa/version.rb
CHANGED
data/spec/bytes_trie_spec.rb
CHANGED
@@ -5,9 +5,9 @@ describe Melisa::BytesTrie do
|
|
5
5
|
let(:trie) { Melisa::BytesTrie.new(hash) }
|
6
6
|
|
7
7
|
it "stores values" do
|
8
|
-
trie['one'].
|
9
|
-
trie['two'].
|
10
|
-
trie['onetwo'].
|
8
|
+
expect(trie['one']).to eq '1'
|
9
|
+
expect(trie['two']).to eq '2'
|
10
|
+
expect(trie['onetwo']).to eq '3'
|
11
11
|
end
|
12
12
|
|
13
13
|
it "sets and gets values" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: melisa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Duane Johnson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -157,30 +157,6 @@ files:
|
|
157
157
|
- ext/marisa-0.2.4/marisa.pc.in
|
158
158
|
- ext/marisa-0.2.4/missing
|
159
159
|
- ext/marisa-0.2.4/mkmf.log
|
160
|
-
- ext/marisa-0.2.4/pkg/bin/marisa-benchmark
|
161
|
-
- ext/marisa-0.2.4/pkg/bin/marisa-build
|
162
|
-
- ext/marisa-0.2.4/pkg/bin/marisa-common-prefix-search
|
163
|
-
- ext/marisa-0.2.4/pkg/bin/marisa-dump
|
164
|
-
- ext/marisa-0.2.4/pkg/bin/marisa-lookup
|
165
|
-
- ext/marisa-0.2.4/pkg/bin/marisa-predictive-search
|
166
|
-
- ext/marisa-0.2.4/pkg/bin/marisa-reverse-lookup
|
167
|
-
- ext/marisa-0.2.4/pkg/include/marisa.h
|
168
|
-
- ext/marisa-0.2.4/pkg/include/marisa/agent.h
|
169
|
-
- ext/marisa-0.2.4/pkg/include/marisa/base.h
|
170
|
-
- ext/marisa-0.2.4/pkg/include/marisa/exception.h
|
171
|
-
- ext/marisa-0.2.4/pkg/include/marisa/iostream.h
|
172
|
-
- ext/marisa-0.2.4/pkg/include/marisa/key.h
|
173
|
-
- ext/marisa-0.2.4/pkg/include/marisa/keyset.h
|
174
|
-
- ext/marisa-0.2.4/pkg/include/marisa/query.h
|
175
|
-
- ext/marisa-0.2.4/pkg/include/marisa/scoped-array.h
|
176
|
-
- ext/marisa-0.2.4/pkg/include/marisa/scoped-ptr.h
|
177
|
-
- ext/marisa-0.2.4/pkg/include/marisa/stdio.h
|
178
|
-
- ext/marisa-0.2.4/pkg/include/marisa/trie.h
|
179
|
-
- ext/marisa-0.2.4/pkg/lib/libmarisa.0.dylib
|
180
|
-
- ext/marisa-0.2.4/pkg/lib/libmarisa.a
|
181
|
-
- ext/marisa-0.2.4/pkg/lib/libmarisa.dylib
|
182
|
-
- ext/marisa-0.2.4/pkg/lib/libmarisa.la
|
183
|
-
- ext/marisa-0.2.4/pkg/lib/pkgconfig/marisa.pc
|
184
160
|
- ext/marisa-0.2.4/tests/Makefile.am
|
185
161
|
- ext/marisa-0.2.4/tests/Makefile.in
|
186
162
|
- ext/marisa-0.2.4/tests/base-test.cc
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,14 +0,0 @@
|
|
1
|
-
#ifndef MARISA_H_
|
2
|
-
#define MARISA_H_
|
3
|
-
|
4
|
-
// "marisa/stdio.h" includes <cstdio> for I/O using std::FILE.
|
5
|
-
#include "marisa/stdio.h"
|
6
|
-
|
7
|
-
// "marisa/iostream.h" includes <iosfwd> for I/O using std::iostream.
|
8
|
-
#include "marisa/iostream.h"
|
9
|
-
|
10
|
-
// You can use <marisa/trie.h> instead of <marisa.h> if you don't need the
|
11
|
-
// above I/O interfaces and don't want to include the above I/O headers.
|
12
|
-
#include "marisa/trie.h"
|
13
|
-
|
14
|
-
#endif // MARISA_H_
|
@@ -1,73 +0,0 @@
|
|
1
|
-
#ifndef MARISA_AGENT_H_
|
2
|
-
#define MARISA_AGENT_H_
|
3
|
-
|
4
|
-
#include "key.h"
|
5
|
-
#include "query.h"
|
6
|
-
|
7
|
-
namespace marisa {
|
8
|
-
namespace grimoire {
|
9
|
-
namespace trie {
|
10
|
-
|
11
|
-
class State;
|
12
|
-
|
13
|
-
} // namespace trie
|
14
|
-
} // namespace grimoire
|
15
|
-
|
16
|
-
class Agent {
|
17
|
-
public:
|
18
|
-
Agent();
|
19
|
-
~Agent();
|
20
|
-
|
21
|
-
const Query &query() const {
|
22
|
-
return query_;
|
23
|
-
}
|
24
|
-
const Key &key() const {
|
25
|
-
return key_;
|
26
|
-
}
|
27
|
-
|
28
|
-
void set_query(const char *str);
|
29
|
-
void set_query(const char *ptr, std::size_t length);
|
30
|
-
void set_query(std::size_t key_id);
|
31
|
-
|
32
|
-
const grimoire::trie::State &state() const {
|
33
|
-
return *state_;
|
34
|
-
}
|
35
|
-
grimoire::trie::State &state() {
|
36
|
-
return *state_;
|
37
|
-
}
|
38
|
-
|
39
|
-
void set_key(const char *str) {
|
40
|
-
MARISA_DEBUG_IF(str == NULL, MARISA_NULL_ERROR);
|
41
|
-
key_.set_str(str);
|
42
|
-
}
|
43
|
-
void set_key(const char *ptr, std::size_t length) {
|
44
|
-
MARISA_DEBUG_IF((ptr == NULL) && (length != 0), MARISA_NULL_ERROR);
|
45
|
-
MARISA_DEBUG_IF(length > MARISA_UINT32_MAX, MARISA_SIZE_ERROR);
|
46
|
-
key_.set_str(ptr, length);
|
47
|
-
}
|
48
|
-
void set_key(std::size_t id) {
|
49
|
-
MARISA_DEBUG_IF(id > MARISA_UINT32_MAX, MARISA_SIZE_ERROR);
|
50
|
-
key_.set_id(id);
|
51
|
-
}
|
52
|
-
|
53
|
-
bool has_state() const {
|
54
|
-
return state_.get() != NULL;
|
55
|
-
}
|
56
|
-
void init_state();
|
57
|
-
|
58
|
-
void clear();
|
59
|
-
void swap(Agent &rhs);
|
60
|
-
|
61
|
-
private:
|
62
|
-
Query query_;
|
63
|
-
Key key_;
|
64
|
-
scoped_ptr<grimoire::trie::State> state_;
|
65
|
-
|
66
|
-
// Disallows copy and assignment.
|
67
|
-
Agent(const Agent &);
|
68
|
-
Agent &operator=(const Agent &);
|
69
|
-
};
|
70
|
-
|
71
|
-
} // namespace marisa
|
72
|
-
|
73
|
-
#endif // MARISA_AGENT_H_
|
@@ -1,193 +0,0 @@
|
|
1
|
-
#ifndef MARISA_BASE_H_
|
2
|
-
#define MARISA_BASE_H_
|
3
|
-
|
4
|
-
// Old Visual C++ does not provide stdint.h.
|
5
|
-
#ifndef _MSC_VER
|
6
|
-
#include <stdint.h>
|
7
|
-
#endif // _MSC_VER
|
8
|
-
|
9
|
-
#ifdef __cplusplus
|
10
|
-
#include <cstddef>
|
11
|
-
#else // __cplusplus
|
12
|
-
#include <stddef.h>
|
13
|
-
#endif // __cplusplus
|
14
|
-
|
15
|
-
#ifdef __cplusplus
|
16
|
-
extern "C" {
|
17
|
-
#endif // __cplusplus
|
18
|
-
|
19
|
-
#ifdef _MSC_VER
|
20
|
-
typedef unsigned __int8 marisa_uint8;
|
21
|
-
typedef unsigned __int16 marisa_uint16;
|
22
|
-
typedef unsigned __int32 marisa_uint32;
|
23
|
-
typedef unsigned __int64 marisa_uint64;
|
24
|
-
#else // _MSC_VER
|
25
|
-
typedef uint8_t marisa_uint8;
|
26
|
-
typedef uint16_t marisa_uint16;
|
27
|
-
typedef uint32_t marisa_uint32;
|
28
|
-
typedef uint64_t marisa_uint64;
|
29
|
-
#endif // _MSC_VER
|
30
|
-
|
31
|
-
#if defined(_WIN64) || defined(__amd64__) || defined(__x86_64__) || \
|
32
|
-
defined(__ia64__) || defined(__ppc64__) || defined(__powerpc64__) || \
|
33
|
-
defined(__sparc64__) || defined(__mips64__) || defined(__aarch64__)
|
34
|
-
#define MARISA_WORD_SIZE 64
|
35
|
-
#else // defined(_WIN64), etc.
|
36
|
-
#define MARISA_WORD_SIZE 32
|
37
|
-
#endif // defined(_WIN64), etc.
|
38
|
-
|
39
|
-
//#define MARISA_WORD_SIZE (sizeof(void *) * 8)
|
40
|
-
|
41
|
-
#define MARISA_UINT8_MAX ((marisa_uint8)~(marisa_uint8)0)
|
42
|
-
#define MARISA_UINT16_MAX ((marisa_uint16)~(marisa_uint16)0)
|
43
|
-
#define MARISA_UINT32_MAX ((marisa_uint32)~(marisa_uint32)0)
|
44
|
-
#define MARISA_UINT64_MAX ((marisa_uint64)~(marisa_uint64)0)
|
45
|
-
#define MARISA_SIZE_MAX ((size_t)~(size_t)0)
|
46
|
-
|
47
|
-
#define MARISA_INVALID_LINK_ID MARISA_UINT32_MAX
|
48
|
-
#define MARISA_INVALID_KEY_ID MARISA_UINT32_MAX
|
49
|
-
#define MARISA_INVALID_EXTRA (MARISA_UINT32_MAX >> 8)
|
50
|
-
|
51
|
-
// Error codes are defined as members of marisa_error_code. This library throws
|
52
|
-
// an exception with one of the error codes when an error occurs.
|
53
|
-
typedef enum marisa_error_code_ {
|
54
|
-
// MARISA_OK means that a requested operation has succeeded. In practice, an
|
55
|
-
// exception never has MARISA_OK because it is not an error.
|
56
|
-
MARISA_OK = 0,
|
57
|
-
|
58
|
-
// MARISA_STATE_ERROR means that an object was not ready for a requested
|
59
|
-
// operation. For example, an operation to modify a fixed vector throws an
|
60
|
-
// exception with MARISA_STATE_ERROR.
|
61
|
-
MARISA_STATE_ERROR = 1,
|
62
|
-
|
63
|
-
// MARISA_NULL_ERROR means that an invalid NULL pointer has been given.
|
64
|
-
MARISA_NULL_ERROR = 2,
|
65
|
-
|
66
|
-
// MARISA_BOUND_ERROR means that an operation has tried to access an out of
|
67
|
-
// range address.
|
68
|
-
MARISA_BOUND_ERROR = 3,
|
69
|
-
|
70
|
-
// MARISA_RANGE_ERROR means that an out of range value has appeared in
|
71
|
-
// operation.
|
72
|
-
MARISA_RANGE_ERROR = 4,
|
73
|
-
|
74
|
-
// MARISA_CODE_ERROR means that an undefined code has appeared in operation.
|
75
|
-
MARISA_CODE_ERROR = 5,
|
76
|
-
|
77
|
-
// MARISA_RESET_ERROR means that a smart pointer has tried to reset itself.
|
78
|
-
MARISA_RESET_ERROR = 6,
|
79
|
-
|
80
|
-
// MARISA_SIZE_ERROR means that a size has exceeded a library limitation.
|
81
|
-
MARISA_SIZE_ERROR = 7,
|
82
|
-
|
83
|
-
// MARISA_MEMORY_ERROR means that a memory allocation has failed.
|
84
|
-
MARISA_MEMORY_ERROR = 8,
|
85
|
-
|
86
|
-
// MARISA_IO_ERROR means that an I/O operation has failed.
|
87
|
-
MARISA_IO_ERROR = 9,
|
88
|
-
|
89
|
-
// MARISA_FORMAT_ERROR means that input was in invalid format.
|
90
|
-
MARISA_FORMAT_ERROR = 10,
|
91
|
-
} marisa_error_code;
|
92
|
-
|
93
|
-
// Min/max values, flags and masks for dictionary settings are defined below.
|
94
|
-
// Please note that unspecified settings will be replaced with the default
|
95
|
-
// settings. For example, 0 is equivalent to (MARISA_DEFAULT_NUM_TRIES |
|
96
|
-
// MARISA_DEFAULT_TRIE | MARISA_DEFAULT_TAIL | MARISA_DEFAULT_ORDER).
|
97
|
-
|
98
|
-
// A dictionary consists of 3 tries in default. Usually more tries make a
|
99
|
-
// dictionary space-efficient but time-inefficient.
|
100
|
-
typedef enum marisa_num_tries_ {
|
101
|
-
MARISA_MIN_NUM_TRIES = 0x00001,
|
102
|
-
MARISA_MAX_NUM_TRIES = 0x0007F,
|
103
|
-
MARISA_DEFAULT_NUM_TRIES = 0x00003,
|
104
|
-
} marisa_num_tries;
|
105
|
-
|
106
|
-
// This library uses a cache technique to accelerate search functions. The
|
107
|
-
// following enumerated type marisa_cache_level gives a list of available cache
|
108
|
-
// size options. A larger cache enables faster search but takes a more space.
|
109
|
-
typedef enum marisa_cache_level_ {
|
110
|
-
MARISA_HUGE_CACHE = 0x00080,
|
111
|
-
MARISA_LARGE_CACHE = 0x00100,
|
112
|
-
MARISA_NORMAL_CACHE = 0x00200,
|
113
|
-
MARISA_SMALL_CACHE = 0x00400,
|
114
|
-
MARISA_TINY_CACHE = 0x00800,
|
115
|
-
MARISA_DEFAULT_CACHE = MARISA_NORMAL_CACHE
|
116
|
-
} marisa_cache_level;
|
117
|
-
|
118
|
-
// This library provides 2 kinds of TAIL implementations.
|
119
|
-
typedef enum marisa_tail_mode_ {
|
120
|
-
// MARISA_TEXT_TAIL merges last labels as zero-terminated strings. So, it is
|
121
|
-
// available if and only if the last labels do not contain a NULL character.
|
122
|
-
// If MARISA_TEXT_TAIL is specified and a NULL character exists in the last
|
123
|
-
// labels, the setting is automatically switched to MARISA_BINARY_TAIL.
|
124
|
-
MARISA_TEXT_TAIL = 0x01000,
|
125
|
-
|
126
|
-
// MARISA_BINARY_TAIL also merges last labels but as byte sequences. It uses
|
127
|
-
// a bit vector to detect the end of a sequence, instead of NULL characters.
|
128
|
-
// So, MARISA_BINARY_TAIL requires a larger space if the average length of
|
129
|
-
// labels is greater than 8.
|
130
|
-
MARISA_BINARY_TAIL = 0x02000,
|
131
|
-
|
132
|
-
MARISA_DEFAULT_TAIL = MARISA_TEXT_TAIL,
|
133
|
-
} marisa_tail_mode;
|
134
|
-
|
135
|
-
// The arrangement of nodes affects the time cost of matching and the order of
|
136
|
-
// predictive search.
|
137
|
-
typedef enum marisa_node_order_ {
|
138
|
-
// MARISA_LABEL_ORDER arranges nodes in ascending label order.
|
139
|
-
// MARISA_LABEL_ORDER is useful if an application needs to predict keys in
|
140
|
-
// label order.
|
141
|
-
MARISA_LABEL_ORDER = 0x10000,
|
142
|
-
|
143
|
-
// MARISA_WEIGHT_ORDER arranges nodes in descending weight order.
|
144
|
-
// MARISA_WEIGHT_ORDER is generally a better choice because it enables faster
|
145
|
-
// matching.
|
146
|
-
MARISA_WEIGHT_ORDER = 0x20000,
|
147
|
-
|
148
|
-
MARISA_DEFAULT_ORDER = MARISA_WEIGHT_ORDER,
|
149
|
-
} marisa_node_order;
|
150
|
-
|
151
|
-
typedef enum marisa_config_mask_ {
|
152
|
-
MARISA_NUM_TRIES_MASK = 0x0007F,
|
153
|
-
MARISA_CACHE_LEVEL_MASK = 0x00F80,
|
154
|
-
MARISA_TAIL_MODE_MASK = 0x0F000,
|
155
|
-
MARISA_NODE_ORDER_MASK = 0xF0000,
|
156
|
-
MARISA_CONFIG_MASK = 0xFFFFF
|
157
|
-
} marisa_config_mask;
|
158
|
-
|
159
|
-
#ifdef __cplusplus
|
160
|
-
} // extern "C"
|
161
|
-
#endif // __cplusplus
|
162
|
-
|
163
|
-
#ifdef __cplusplus
|
164
|
-
namespace marisa {
|
165
|
-
|
166
|
-
typedef ::marisa_uint8 UInt8;
|
167
|
-
typedef ::marisa_uint16 UInt16;
|
168
|
-
typedef ::marisa_uint32 UInt32;
|
169
|
-
typedef ::marisa_uint64 UInt64;
|
170
|
-
|
171
|
-
typedef ::marisa_error_code ErrorCode;
|
172
|
-
|
173
|
-
typedef ::marisa_cache_level CacheLevel;
|
174
|
-
typedef ::marisa_tail_mode TailMode;
|
175
|
-
typedef ::marisa_node_order NodeOrder;
|
176
|
-
|
177
|
-
template <typename T>
|
178
|
-
inline void swap(T &lhs, T &rhs) {
|
179
|
-
T temp = lhs;
|
180
|
-
lhs = rhs;
|
181
|
-
rhs = temp;
|
182
|
-
}
|
183
|
-
|
184
|
-
} // namespace marisa
|
185
|
-
#endif // __cplusplus
|
186
|
-
|
187
|
-
#ifdef __cplusplus
|
188
|
-
#include "exception.h"
|
189
|
-
#include "scoped-ptr.h"
|
190
|
-
#include "scoped-array.h"
|
191
|
-
#endif // __cplusplus
|
192
|
-
|
193
|
-
#endif // MARISA_BASE_H_
|
@@ -1,82 +0,0 @@
|
|
1
|
-
#ifndef MARISA_EXCEPTION_H_
|
2
|
-
#define MARISA_EXCEPTION_H_
|
3
|
-
|
4
|
-
#include <exception>
|
5
|
-
|
6
|
-
#include "base.h"
|
7
|
-
|
8
|
-
namespace marisa {
|
9
|
-
|
10
|
-
// An exception object keeps a filename, a line number, an error code and an
|
11
|
-
// error message. The message format is as follows:
|
12
|
-
// "__FILE__:__LINE__: error_code: error_message"
|
13
|
-
class Exception : public std::exception {
|
14
|
-
public:
|
15
|
-
Exception(const char *filename, int line,
|
16
|
-
ErrorCode error_code, const char *error_message)
|
17
|
-
: std::exception(), filename_(filename), line_(line),
|
18
|
-
error_code_(error_code), error_message_(error_message) {}
|
19
|
-
Exception(const Exception &ex)
|
20
|
-
: std::exception(), filename_(ex.filename_), line_(ex.line_),
|
21
|
-
error_code_(ex.error_code_), error_message_(ex.error_message_) {}
|
22
|
-
virtual ~Exception() throw() {}
|
23
|
-
|
24
|
-
Exception &operator=(const Exception &rhs) {
|
25
|
-
filename_ = rhs.filename_;
|
26
|
-
line_ = rhs.line_;
|
27
|
-
error_code_ = rhs.error_code_;
|
28
|
-
error_message_ = rhs.error_message_;
|
29
|
-
return *this;
|
30
|
-
}
|
31
|
-
|
32
|
-
const char *filename() const {
|
33
|
-
return filename_;
|
34
|
-
}
|
35
|
-
int line() const {
|
36
|
-
return line_;
|
37
|
-
}
|
38
|
-
ErrorCode error_code() const {
|
39
|
-
return error_code_;
|
40
|
-
}
|
41
|
-
const char *error_message() const {
|
42
|
-
return error_message_;
|
43
|
-
}
|
44
|
-
|
45
|
-
virtual const char *what() const throw() {
|
46
|
-
return error_message_;
|
47
|
-
}
|
48
|
-
|
49
|
-
private:
|
50
|
-
const char *filename_;
|
51
|
-
int line_;
|
52
|
-
ErrorCode error_code_;
|
53
|
-
const char *error_message_;
|
54
|
-
};
|
55
|
-
|
56
|
-
// These macros are used to convert a line number to a string constant.
|
57
|
-
#define MARISA_INT_TO_STR(value) #value
|
58
|
-
#define MARISA_LINE_TO_STR(line) MARISA_INT_TO_STR(line)
|
59
|
-
#define MARISA_LINE_STR MARISA_LINE_TO_STR(__LINE__)
|
60
|
-
|
61
|
-
// MARISA_THROW throws an exception with a filename, a line number, an error
|
62
|
-
// code and an error message. The message format is as follows:
|
63
|
-
// "__FILE__:__LINE__: error_code: error_message"
|
64
|
-
#define MARISA_THROW(error_code, error_message) \
|
65
|
-
(throw marisa::Exception(__FILE__, __LINE__, error_code, \
|
66
|
-
__FILE__ ":" MARISA_LINE_STR ": " #error_code ": " error_message))
|
67
|
-
|
68
|
-
// MARISA_THROW_IF throws an exception if `condition' is true.
|
69
|
-
#define MARISA_THROW_IF(condition, error_code) \
|
70
|
-
(void)((!(condition)) || (MARISA_THROW(error_code, #condition), 0))
|
71
|
-
|
72
|
-
// MARISA_DEBUG_IF is ignored if _DEBUG is undefined. So, it is useful for
|
73
|
-
// debugging time-critical codes.
|
74
|
-
#ifdef _DEBUG
|
75
|
-
#define MARISA_DEBUG_IF(cond, error_code) MARISA_THROW_IF(cond, error_code)
|
76
|
-
#else
|
77
|
-
#define MARISA_DEBUG_IF(cond, error_code)
|
78
|
-
#endif
|
79
|
-
|
80
|
-
} // namespace marisa
|
81
|
-
|
82
|
-
#endif // MARISA_EXCEPTION_H_
|
@@ -1,18 +0,0 @@
|
|
1
|
-
#ifndef MARISA_IOSTREAM_H_
|
2
|
-
#define MARISA_IOSTREAM_H_
|
3
|
-
|
4
|
-
#include <iosfwd>
|
5
|
-
|
6
|
-
namespace marisa {
|
7
|
-
|
8
|
-
class Trie;
|
9
|
-
|
10
|
-
std::istream &read(std::istream &stream, Trie *trie);
|
11
|
-
std::ostream &write(std::ostream &stream, const Trie &trie);
|
12
|
-
|
13
|
-
std::istream &operator>>(std::istream &stream, Trie &trie);
|
14
|
-
std::ostream &operator<<(std::ostream &stream, const Trie &trie);
|
15
|
-
|
16
|
-
} // namespace marisa
|
17
|
-
|
18
|
-
#endif // MARISA_IOSTREAM_H_
|
@@ -1,85 +0,0 @@
|
|
1
|
-
#ifndef MARISA_KEY_H_
|
2
|
-
#define MARISA_KEY_H_
|
3
|
-
|
4
|
-
#include "base.h"
|
5
|
-
|
6
|
-
namespace marisa {
|
7
|
-
|
8
|
-
class Key {
|
9
|
-
public:
|
10
|
-
Key() : ptr_(NULL), length_(0), union_() {
|
11
|
-
union_.id = 0;
|
12
|
-
}
|
13
|
-
Key(const Key &key)
|
14
|
-
: ptr_(key.ptr_), length_(key.length_), union_(key.union_) {}
|
15
|
-
|
16
|
-
Key &operator=(const Key &key) {
|
17
|
-
ptr_ = key.ptr_;
|
18
|
-
length_ = key.length_;
|
19
|
-
union_ = key.union_;
|
20
|
-
return *this;
|
21
|
-
}
|
22
|
-
|
23
|
-
char operator[](std::size_t i) const {
|
24
|
-
MARISA_DEBUG_IF(i >= length_, MARISA_BOUND_ERROR);
|
25
|
-
return ptr_[i];
|
26
|
-
}
|
27
|
-
|
28
|
-
void set_str(const char *str) {
|
29
|
-
MARISA_DEBUG_IF(str == NULL, MARISA_NULL_ERROR);
|
30
|
-
std::size_t length = 0;
|
31
|
-
while (str[length] != '\0') {
|
32
|
-
++length;
|
33
|
-
}
|
34
|
-
MARISA_DEBUG_IF(length > MARISA_UINT32_MAX, MARISA_SIZE_ERROR);
|
35
|
-
ptr_ = str;
|
36
|
-
length_ = (UInt32)length;
|
37
|
-
}
|
38
|
-
void set_str(const char *ptr, std::size_t length) {
|
39
|
-
MARISA_DEBUG_IF((ptr == NULL) && (length != 0), MARISA_NULL_ERROR);
|
40
|
-
MARISA_DEBUG_IF(length > MARISA_UINT32_MAX, MARISA_SIZE_ERROR);
|
41
|
-
ptr_ = ptr;
|
42
|
-
length_ = (UInt32)length;
|
43
|
-
}
|
44
|
-
void set_id(std::size_t id) {
|
45
|
-
MARISA_DEBUG_IF(id > MARISA_UINT32_MAX, MARISA_SIZE_ERROR);
|
46
|
-
union_.id = (UInt32)id;
|
47
|
-
}
|
48
|
-
void set_weight(float weight) {
|
49
|
-
union_.weight = weight;
|
50
|
-
}
|
51
|
-
|
52
|
-
const char *ptr() const {
|
53
|
-
return ptr_;
|
54
|
-
}
|
55
|
-
std::size_t length() const {
|
56
|
-
return length_;
|
57
|
-
}
|
58
|
-
std::size_t id() const {
|
59
|
-
return union_.id;
|
60
|
-
}
|
61
|
-
float weight() const {
|
62
|
-
return union_.weight;
|
63
|
-
}
|
64
|
-
|
65
|
-
void clear() {
|
66
|
-
Key().swap(*this);
|
67
|
-
}
|
68
|
-
void swap(Key &rhs) {
|
69
|
-
marisa::swap(ptr_, rhs.ptr_);
|
70
|
-
marisa::swap(length_, rhs.length_);
|
71
|
-
marisa::swap(union_.id, rhs.union_.id);
|
72
|
-
}
|
73
|
-
|
74
|
-
private:
|
75
|
-
const char *ptr_;
|
76
|
-
UInt32 length_;
|
77
|
-
union Union {
|
78
|
-
UInt32 id;
|
79
|
-
float weight;
|
80
|
-
} union_;
|
81
|
-
};
|
82
|
-
|
83
|
-
} // namespace marisa
|
84
|
-
|
85
|
-
#endif // MARISA_KEY_H_
|
@@ -1,80 +0,0 @@
|
|
1
|
-
#ifndef MARISA_KEYSET_H_
|
2
|
-
#define MARISA_KEYSET_H_
|
3
|
-
|
4
|
-
#include "key.h"
|
5
|
-
|
6
|
-
namespace marisa {
|
7
|
-
|
8
|
-
class Keyset {
|
9
|
-
public:
|
10
|
-
enum {
|
11
|
-
BASE_BLOCK_SIZE = 4096,
|
12
|
-
EXTRA_BLOCK_SIZE = 1024,
|
13
|
-
KEY_BLOCK_SIZE = 256
|
14
|
-
};
|
15
|
-
|
16
|
-
Keyset();
|
17
|
-
|
18
|
-
void push_back(const Key &key);
|
19
|
-
void push_back(const Key &key, char end_marker);
|
20
|
-
|
21
|
-
void push_back(const char *str);
|
22
|
-
void push_back(const char *ptr, std::size_t length, float weight = 1.0);
|
23
|
-
|
24
|
-
const Key &operator[](std::size_t i) const {
|
25
|
-
MARISA_DEBUG_IF(i >= size_, MARISA_BOUND_ERROR);
|
26
|
-
return key_blocks_[i / KEY_BLOCK_SIZE][i % KEY_BLOCK_SIZE];
|
27
|
-
}
|
28
|
-
Key &operator[](std::size_t i) {
|
29
|
-
MARISA_DEBUG_IF(i >= size_, MARISA_BOUND_ERROR);
|
30
|
-
return key_blocks_[i / KEY_BLOCK_SIZE][i % KEY_BLOCK_SIZE];
|
31
|
-
}
|
32
|
-
|
33
|
-
std::size_t num_keys() const {
|
34
|
-
return size_;
|
35
|
-
}
|
36
|
-
|
37
|
-
bool empty() const {
|
38
|
-
return size_ == 0;
|
39
|
-
}
|
40
|
-
std::size_t size() const {
|
41
|
-
return size_;
|
42
|
-
}
|
43
|
-
std::size_t total_length() const {
|
44
|
-
return total_length_;
|
45
|
-
}
|
46
|
-
|
47
|
-
void reset();
|
48
|
-
|
49
|
-
void clear();
|
50
|
-
void swap(Keyset &rhs);
|
51
|
-
|
52
|
-
private:
|
53
|
-
scoped_array<scoped_array<char> > base_blocks_;
|
54
|
-
std::size_t base_blocks_size_;
|
55
|
-
std::size_t base_blocks_capacity_;
|
56
|
-
scoped_array<scoped_array<char> > extra_blocks_;
|
57
|
-
std::size_t extra_blocks_size_;
|
58
|
-
std::size_t extra_blocks_capacity_;
|
59
|
-
scoped_array<scoped_array<Key> > key_blocks_;
|
60
|
-
std::size_t key_blocks_size_;
|
61
|
-
std::size_t key_blocks_capacity_;
|
62
|
-
char *ptr_;
|
63
|
-
std::size_t avail_;
|
64
|
-
std::size_t size_;
|
65
|
-
std::size_t total_length_;
|
66
|
-
|
67
|
-
char *reserve(std::size_t size);
|
68
|
-
|
69
|
-
void append_base_block();
|
70
|
-
void append_extra_block(std::size_t size);
|
71
|
-
void append_key_block();
|
72
|
-
|
73
|
-
// Disallows copy and assignment.
|
74
|
-
Keyset(const Keyset &);
|
75
|
-
Keyset &operator=(const Keyset &);
|
76
|
-
};
|
77
|
-
|
78
|
-
} // namespace marisa
|
79
|
-
|
80
|
-
#endif // MARISA_KEYSET_H_
|
@@ -1,71 +0,0 @@
|
|
1
|
-
#ifndef MARISA_QUERY_H_
|
2
|
-
#define MARISA_QUERY_H_
|
3
|
-
|
4
|
-
#include "base.h"
|
5
|
-
|
6
|
-
namespace marisa {
|
7
|
-
|
8
|
-
class Query {
|
9
|
-
public:
|
10
|
-
Query() : ptr_(NULL), length_(0), id_(0) {}
|
11
|
-
Query(const Query &query)
|
12
|
-
: ptr_(query.ptr_), length_(query.length_), id_(query.id_) {}
|
13
|
-
|
14
|
-
Query &operator=(const Query &query) {
|
15
|
-
ptr_ = query.ptr_;
|
16
|
-
length_ = query.length_;
|
17
|
-
id_ = query.id_;
|
18
|
-
return *this;
|
19
|
-
}
|
20
|
-
|
21
|
-
char operator[](std::size_t i) const {
|
22
|
-
MARISA_DEBUG_IF(i >= length_, MARISA_BOUND_ERROR);
|
23
|
-
return ptr_[i];
|
24
|
-
}
|
25
|
-
|
26
|
-
void set_str(const char *str) {
|
27
|
-
MARISA_DEBUG_IF(str == NULL, MARISA_NULL_ERROR);
|
28
|
-
std::size_t length = 0;
|
29
|
-
while (str[length] != '\0') {
|
30
|
-
++length;
|
31
|
-
}
|
32
|
-
ptr_ = str;
|
33
|
-
length_ = length;
|
34
|
-
}
|
35
|
-
void set_str(const char *ptr, std::size_t length) {
|
36
|
-
MARISA_DEBUG_IF((ptr == NULL) && (length != 0), MARISA_NULL_ERROR);
|
37
|
-
ptr_ = ptr;
|
38
|
-
length_ = length;
|
39
|
-
}
|
40
|
-
void set_id(std::size_t id) {
|
41
|
-
id_ = id;
|
42
|
-
}
|
43
|
-
|
44
|
-
const char *ptr() const {
|
45
|
-
return ptr_;
|
46
|
-
}
|
47
|
-
std::size_t length() const {
|
48
|
-
return length_;
|
49
|
-
}
|
50
|
-
std::size_t id() const {
|
51
|
-
return id_;
|
52
|
-
}
|
53
|
-
|
54
|
-
void clear() {
|
55
|
-
Query().swap(*this);
|
56
|
-
}
|
57
|
-
void swap(Query &rhs) {
|
58
|
-
marisa::swap(ptr_, rhs.ptr_);
|
59
|
-
marisa::swap(length_, rhs.length_);
|
60
|
-
marisa::swap(id_, rhs.id_);
|
61
|
-
}
|
62
|
-
|
63
|
-
private:
|
64
|
-
const char *ptr_;
|
65
|
-
std::size_t length_;
|
66
|
-
std::size_t id_;
|
67
|
-
};
|
68
|
-
|
69
|
-
} // namespace marisa
|
70
|
-
|
71
|
-
#endif // MARISA_QUERY_H_
|
@@ -1,48 +0,0 @@
|
|
1
|
-
#ifndef MARISA_SCOPED_ARRAY_H_
|
2
|
-
#define MARISA_SCOPED_ARRAY_H_
|
3
|
-
|
4
|
-
#include "base.h"
|
5
|
-
|
6
|
-
namespace marisa {
|
7
|
-
|
8
|
-
template <typename T>
|
9
|
-
class scoped_array {
|
10
|
-
public:
|
11
|
-
scoped_array() : array_(NULL) {}
|
12
|
-
explicit scoped_array(T *array) : array_(array) {}
|
13
|
-
|
14
|
-
~scoped_array() {
|
15
|
-
delete [] array_;
|
16
|
-
}
|
17
|
-
|
18
|
-
void reset(T *array = NULL) {
|
19
|
-
MARISA_THROW_IF((array != NULL) && (array == array_), MARISA_RESET_ERROR);
|
20
|
-
scoped_array(array).swap(*this);
|
21
|
-
}
|
22
|
-
|
23
|
-
T &operator[](std::size_t i) const {
|
24
|
-
MARISA_DEBUG_IF(array_ == NULL, MARISA_STATE_ERROR);
|
25
|
-
return array_[i];
|
26
|
-
}
|
27
|
-
T *get() const {
|
28
|
-
return array_;
|
29
|
-
}
|
30
|
-
|
31
|
-
void clear() {
|
32
|
-
scoped_array().swap(*this);
|
33
|
-
}
|
34
|
-
void swap(scoped_array &rhs) {
|
35
|
-
marisa::swap(array_, rhs.array_);
|
36
|
-
}
|
37
|
-
|
38
|
-
private:
|
39
|
-
T *array_;
|
40
|
-
|
41
|
-
// Disallows copy and assignment.
|
42
|
-
scoped_array(const scoped_array &);
|
43
|
-
scoped_array &operator=(const scoped_array &);
|
44
|
-
};
|
45
|
-
|
46
|
-
} // namespace marisa
|
47
|
-
|
48
|
-
#endif // MARISA_SCOPED_ARRAY_H_
|
@@ -1,52 +0,0 @@
|
|
1
|
-
#ifndef MARISA_SCOPED_PTR_H_
|
2
|
-
#define MARISA_SCOPED_PTR_H_
|
3
|
-
|
4
|
-
#include "base.h"
|
5
|
-
|
6
|
-
namespace marisa {
|
7
|
-
|
8
|
-
template <typename T>
|
9
|
-
class scoped_ptr {
|
10
|
-
public:
|
11
|
-
scoped_ptr() : ptr_(NULL) {}
|
12
|
-
explicit scoped_ptr(T *ptr) : ptr_(ptr) {}
|
13
|
-
|
14
|
-
~scoped_ptr() {
|
15
|
-
delete ptr_;
|
16
|
-
}
|
17
|
-
|
18
|
-
void reset(T *ptr = NULL) {
|
19
|
-
MARISA_THROW_IF((ptr != NULL) && (ptr == ptr_), MARISA_RESET_ERROR);
|
20
|
-
scoped_ptr(ptr).swap(*this);
|
21
|
-
}
|
22
|
-
|
23
|
-
T &operator*() const {
|
24
|
-
MARISA_DEBUG_IF(ptr_ == NULL, MARISA_STATE_ERROR);
|
25
|
-
return *ptr_;
|
26
|
-
}
|
27
|
-
T *operator->() const {
|
28
|
-
MARISA_DEBUG_IF(ptr_ == NULL, MARISA_STATE_ERROR);
|
29
|
-
return ptr_;
|
30
|
-
}
|
31
|
-
T *get() const {
|
32
|
-
return ptr_;
|
33
|
-
}
|
34
|
-
|
35
|
-
void clear() {
|
36
|
-
scoped_ptr().swap(*this);
|
37
|
-
}
|
38
|
-
void swap(scoped_ptr &rhs) {
|
39
|
-
marisa::swap(ptr_, rhs.ptr_);
|
40
|
-
}
|
41
|
-
|
42
|
-
private:
|
43
|
-
T *ptr_;
|
44
|
-
|
45
|
-
// Disallows copy and assignment.
|
46
|
-
scoped_ptr(const scoped_ptr &);
|
47
|
-
scoped_ptr &operator=(const scoped_ptr &);
|
48
|
-
};
|
49
|
-
|
50
|
-
} // namespace marisa
|
51
|
-
|
52
|
-
#endif // MARISA_SCOPED_PTR_H_
|
@@ -1,15 +0,0 @@
|
|
1
|
-
#ifndef MARISA_STDIO_H_
|
2
|
-
#define MARISA_STDIO_H_
|
3
|
-
|
4
|
-
#include <cstdio>
|
5
|
-
|
6
|
-
namespace marisa {
|
7
|
-
|
8
|
-
class Trie;
|
9
|
-
|
10
|
-
void fread(std::FILE *file, Trie *trie);
|
11
|
-
void fwrite(std::FILE *file, const Trie &trie);
|
12
|
-
|
13
|
-
} // namespace marisa
|
14
|
-
|
15
|
-
#endif // MARISA_STDIO_H_
|
@@ -1,64 +0,0 @@
|
|
1
|
-
#ifndef MARISA_TRIE_H_
|
2
|
-
#define MARISA_TRIE_H_
|
3
|
-
|
4
|
-
#include "keyset.h"
|
5
|
-
#include "agent.h"
|
6
|
-
|
7
|
-
namespace marisa {
|
8
|
-
namespace grimoire {
|
9
|
-
namespace trie {
|
10
|
-
|
11
|
-
class LoudsTrie;
|
12
|
-
|
13
|
-
} // namespace trie
|
14
|
-
} // namespace grimoire
|
15
|
-
|
16
|
-
class Trie {
|
17
|
-
friend class TrieIO;
|
18
|
-
|
19
|
-
public:
|
20
|
-
Trie();
|
21
|
-
~Trie();
|
22
|
-
|
23
|
-
void build(Keyset &keyset, int config_flags = 0);
|
24
|
-
|
25
|
-
void mmap(const char *filename);
|
26
|
-
void map(const void *ptr, std::size_t size);
|
27
|
-
|
28
|
-
void load(const char *filename);
|
29
|
-
void read(int fd);
|
30
|
-
|
31
|
-
void save(const char *filename) const;
|
32
|
-
void write(int fd) const;
|
33
|
-
|
34
|
-
bool lookup(Agent &agent) const;
|
35
|
-
void reverse_lookup(Agent &agent) const;
|
36
|
-
bool common_prefix_search(Agent &agent) const;
|
37
|
-
bool predictive_search(Agent &agent) const;
|
38
|
-
|
39
|
-
std::size_t num_tries() const;
|
40
|
-
std::size_t num_keys() const;
|
41
|
-
std::size_t num_nodes() const;
|
42
|
-
|
43
|
-
TailMode tail_mode() const;
|
44
|
-
NodeOrder node_order() const;
|
45
|
-
|
46
|
-
bool empty() const;
|
47
|
-
std::size_t size() const;
|
48
|
-
std::size_t total_size() const;
|
49
|
-
std::size_t io_size() const;
|
50
|
-
|
51
|
-
void clear();
|
52
|
-
void swap(Trie &rhs);
|
53
|
-
|
54
|
-
private:
|
55
|
-
scoped_ptr<grimoire::trie::LoudsTrie> trie_;
|
56
|
-
|
57
|
-
// Disallows copy and assignment.
|
58
|
-
Trie(const Trie &);
|
59
|
-
Trie &operator=(const Trie &);
|
60
|
-
};
|
61
|
-
|
62
|
-
} // namespace marisa
|
63
|
-
|
64
|
-
#endif // MARISA_TRIE_H_
|
Binary file
|
Binary file
|
Binary file
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# libmarisa.la - a libtool library file
|
2
|
-
# Generated by libtool (GNU libtool) 2.4.2 Debian-2.4.2-1ubuntu1
|
3
|
-
#
|
4
|
-
# Please DO NOT delete this file!
|
5
|
-
# It is necessary for linking the library.
|
6
|
-
|
7
|
-
# The name that we can dlopen(3).
|
8
|
-
dlname='libmarisa.0.dylib'
|
9
|
-
|
10
|
-
# Names of this library.
|
11
|
-
library_names='libmarisa.0.dylib libmarisa.dylib'
|
12
|
-
|
13
|
-
# The name of the static archive.
|
14
|
-
old_library='libmarisa.a'
|
15
|
-
|
16
|
-
# Linker flags that can not go in dependency_libs.
|
17
|
-
inherited_linker_flags=' '
|
18
|
-
|
19
|
-
# Libraries that this one depends upon.
|
20
|
-
dependency_libs=''
|
21
|
-
|
22
|
-
# Names of additional weak libraries provided by this library
|
23
|
-
weak_library_names=''
|
24
|
-
|
25
|
-
# Version information for libmarisa.
|
26
|
-
current=0
|
27
|
-
age=0
|
28
|
-
revision=0
|
29
|
-
|
30
|
-
# Is this an already installed library?
|
31
|
-
installed=yes
|
32
|
-
|
33
|
-
# Should we warn about portability when linking against -modules?
|
34
|
-
shouldnotlink=no
|
35
|
-
|
36
|
-
# Files to dlopen/dlpreopen
|
37
|
-
dlopen=''
|
38
|
-
dlpreopen=''
|
39
|
-
|
40
|
-
# Directory that this library needs to be installed in:
|
41
|
-
libdir='/Users/duane/Dropbox/Projects/wordtree/melisa/ext/marisa-0.2.4/pkg/lib'
|
@@ -1,11 +0,0 @@
|
|
1
|
-
prefix=/Users/duane/Dropbox/Projects/wordtree/melisa/ext/marisa-0.2.4/pkg
|
2
|
-
exec_prefix=${prefix}
|
3
|
-
bindir=/Users/duane/Dropbox/Projects/wordtree/melisa/bin
|
4
|
-
libdir=${exec_prefix}/lib
|
5
|
-
includedir=${prefix}/include
|
6
|
-
|
7
|
-
Name: Marisa
|
8
|
-
Description: Matching Algorithm with Recursively Implemented StorAge
|
9
|
-
Version: 0.2.4
|
10
|
-
Cflags: -I${includedir}
|
11
|
-
Libs: -L${libdir} -lmarisa
|