安装数据库:tokyotyrant/
下载地址:
wget http://cloud.github.com/downloads/xurenlu/mc_list_patch_4_tokyotyrant/tokyocabinet-1.4.41.tar.gz
wget http://cloud.github.com/downloads/xurenlu/mc_list_patch_4_tokyotyrant/tokyotyrant-1.1.37.tar.gz
tar -xzf tokyotyrant-1.1.37.tar.gz
327 cd tokyocabinet-1.4.41
328 ll
329 tar -xzf tokyocabinet-1.4.41.tar.gz
330 ll
331 cd tokyocabinet-1.4.41
332 ./configure
333 make && make install
334 ll
335 cd ../
340 cd tokyotyrant-1.1.37
341 ./configure
342 make && sudo make install
343 pwd
344 cd ../
345 ll
346 find / -name ttserver
347 mkdir -p /ttserver/
348 chmod 777 -R /ttserver/
349 /usr/local/bin/ttserver -host 127.0.0.1 -port 11111 -thnum 8 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 1 -rts /ttserver/ttserver.rts /ttserver/database.tch
350 curl -X PUT http://127.0.0.1:11111/my_key -d "this is value"
351 curl http://127.0.0.1:11111/my_key
352 curl -X DELETE http://127.0.0.1:11111/my_key
安装web.py,
启动solr:
# cd /usr/local/src/echoprint/echoprint-server/solr/solr/
$ curl http://192.168.1.3:8080/ingest -d "fp_code=eJwty7kNADAMw8BVNILl-Mv-iwWCU11D0g_CQA-USIwoXNEg5YBH3o3-0sil7AHIrAyw&track_id=thisone&length=300&codever=4.12"
后台启动:
nohup python code.py 8088 > /webpy.log 2>&1 &
# yum install ffmpeg-devel boost-devel taglib-devel
如果ffmpeg安装不成功,使用以下方法:
开始安装codegen:
389 unzip echoprint-codegen-master.zip
390 ll
391 mv echoprint-codegen-master echoprint-codegen
392 cd echoprint-codegen
397 cd src/
398 ll
399 whereis boost
400 vi Makefile //edit BOOST_CFLAGS and other variables as necessary
401 make
402 cd ..
403 ll
# ./echoprint-codegen billie_jean.mp3 10 30
# cd /usr/local/src/echoprint/echoprint-server/util
440 mkdir /music
444 ll /music
445 find /music -name "*.mp3" > music_to_ingest
446 ./echoprint-codegen -s < music_to_ingest > allcodes.json
# python splitdata.py /usr/local/src/echoprint/echoprint-codegen/allcodes.json
ps -ef | grep solr
操作手册
启动数据库:
ttservctl restart
启动solr:
# cd /usr/local/src/echoprint/echoprint-server/solr/solr/
# java -Dsolr.solr.home=/usr/local/src/echoprint/echoprint-server/solr/solr/solr/ -Djava.awt.headless=true -jar start.jar
solr管理地址:
http://172.16.146.129:8502/solr/fp/admin/
原生的数据操作:
tcrmgr list -port 1978 172.16.146.129
curl -X PUT http://172.16.146.129:1978/mykey -d "this is value"
curl http://172.16.146.129:1978/thisone2
curl -X DELETE http://172.16.146.129:1978/my_key
命令行测试数据写入读出:
cd /usr/local/src/echoprint/echoprint-server/API目录,
>>> import fp
>>> fp.ingest({"track_id": "my_track_id", "fp": "123 40 123 60 123 80 123 90 123 110 123 130", "length": "120", "codever": "4.12"})
>>> fp.delete(['my_track_id-0','thisfour-0'])
>>> fp.commit()
>>> r = fp.best_match_for_query("123 40 124 60 125 80 126 90 127 110 128 130 129 60 123 40 127 50")
>>> r.message()
'query code length is too small'
>>> example_code = "eJwty7kNADAMw8BVNILl-Mv-iwWCU11D0g_CQA-USIwoXNEg5YBH3o3-0sil7AHIrAyw"
>>> r = fp.best_match_for_query(example_code)
>>> r.message()
'OK (match type 3)'
>>> r.TRID
'my_track_id'
web测试数据读写:
打开web.py服务,开启8080端口,添加数据:
cd /usr/local/src/echoprint/echoprint-server/API
python api.py 8080
模拟post提交添加数据:
$ curl http://172.16.146.129:8080/ingest -d "fp_code=eJwty7kNADAMw8BVNILl-Mv-iwWCU11D0g_CQA-USIwoXNEg5YBH3o3-0sil7AHIrAyw&track_id=thisone&length=300&codever=4.12"
$ curl http://172.16.146.129:8080/ingest -d "fp_code=eJwty7kNADAMw8BVNILl-Mv-iwWCU11D0g_CQA-USIwoXNEg5YBH3o3-0sil7AHIrAyw&track_id=enya&length=300&codever=4.12"
查询数据
http://172.16.146.129:8080/query?fp_code=eJwty7kNADAMw8BVNILl-Mv-iwWCU11D0g_CQA-USIwoXNEg5YBH3o3-0sil7AHIrAyw
123 40 124 60 125 80 126 90 127 110 128 130 129 60 123 40 127 50 127 60
solr返回json:&wt=json
http://172.16.146.129:8502/solr/fp/select/?q=123+40+124+60+125+80+126+90+127+110+128+130+129+60+123+40+127+50+127+60&version=2.2&start=0&rows=10&indent=on&wt=json
通过ID查询:
http://172.16.146.129:8502/solr/fp/select/?q=track_id:thisone-0&version=2.2&start=0&rows=10&indent=on&wt=json
转码
http://172.16.146.129:8080/decode?fp_code=eJwty7kNADAMw8BVNILl-Mv-iwWCU11D0g_CQA-USIwoXNEg5YBH3o3-0sil7AHIrAyw
到这里又可以用命令行去查数据,会现r.TRID变成了刚ingent的ID:
>>> r.TRID
'thisone'
通过codegen把mp3信息生成json文件,
cd /usr/local/src/echoprint/echoprint-codegen
# ./echoprint-codegen Kalimba.mp3 10 30
find /music -name "*.mp3" > music_to_ingest
./echoprint-codegen -s < music_to_ingest > allcodes.json
然后在server里把这个json数据添加进去;
cd /usr/local/src/echoprint/echoprint-server/util
python fastingest.py /usr/local/src/echoprint/echoprint-codegen/allcodes.json
python splitdata.py /usr/local/src/echoprint/echoprint-codegen/allcodes.json