
当然肯定还有滑稽


当然肯定还有滑稽

coreseek是一个修改版的sphinx,用mmseg来做中文分词。但是发现一个问题,日语搜索总是效果很差,全部是假名的关键词会返回一个空结果。
开始猜想是不是词库没有包含日语的关系,后来仔细想了一想,mmseg对于没有在词典里的词应该是直接一元分词的,按理说也不应该出现无法索引日语的关系。我们可以通过mmseg命令行工具来证明这一点:
|
1 2 |
$ /usr/local/mmseg/bin/mmseg -d /usr/local/mmseg/etc/ 1.txt ヨ/x ス/x ガ/x ノ/x ソ/x ラ/x |
证明mmseg进行了一元分词。
那么为什么coreseek搜不到假名呢?我找啊找啊终于发现在coreseek使用mmseg进行分词的过程中,对输入字符做了一个过滤,并且有一个注释:
|
1 2 3 4 5 |
// BEGIN CJK There is no case folding, should do this in remote tokenizer. // Here just make CJK Charactor will remain. --coreseek dRemaps.Add ( CSphRemapRange ( 0x4e00, 0x9FFF, 0x4e00 ) ); dRemaps.Add ( CSphRemapRange ( 0xFF00, 0xFFFF, 0xFF00 ) ); dRemaps.Add ( CSphRemapRange ( 0x3040, 0x303F, 0x3040 ) ); |
可见coreseek虽然将CJK (Chinese, Japanese, Korean) 中所有汉字、全角字符和标点加入了范围,但是却漏掉了平假名和片假名。因此我们将第三个range改成0x3000, 0x30FF, 0x3000就可以修正这个问题。
其中:
|
1 2 3 4 |
// 4e00 - 9fff CJK unified ideographs // 3000 - 303f CJK symbols and punctuation // 3040 - 30ff Hiragana/Katagana // ff00 - ffff half/fullwidth forms |
我把修改后的版本放到了github
另外,这里可以查询到Unicode编码范围对应的字符内容;unicode.org有一个database,但是是一个列出了全部字符的大pdf,我似乎没有找到类似的分类。
对于Ubuntu/Debian,这里有编译好的coreseek的deb包:i386 amd64;依赖于mmseg:i386 amd64;mmseg自带的词典
对于>2.2.10的版本,我在这篇博客里提供了完整的补丁,可以应用在sphinx的源码上编译。
试一下Let’s Encrypt
顺便前几天剁了Alpharacks的辣鸡vps,拿来做前端好了,听说国内效果ping不错(?
因为还有一堆微博图床上的图没法https,所以就不强行301了,你们看心情就好![]()
原标题:被害妄想症该如何生存
先看配置:
|
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 |
server { listen 80 default_server; listen [::]:80 default_server; listen 443 ssl default_server; root /usr/share/nginx/html; ssl_certificate certs/default.pem; ssl_certificate_key certs/default-nopass.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH; ssl_prefer_server_ciphers on; } server { listen 443 ssl spdy; ssl_certificate certs/real-cert.pem; ssl_certificate_key certs/real-cert-nopass.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH; ssl_prefer_server_ciphers on; root /usr/share/nginx/html; server_name example.com; location / { root /path/to/your/files; if (-d $request_filename) { return 404; } try_files $uri $uri/ =404; charset utf-8; } location ~ .*/$ { root /path/to/your/files; access_by_lua ' local coo = ngx.var.cookie_coo if coo ~= "coo" then ngx.exit(404) end '; autoindex on; autoindex_exact_size off; } } |
假设:
审查机关拥有运营商级别的入侵检测设备(比如GFW)
说明: