Linux PyLucene简单安装服务器

运维 系统运维
有了Linux PyLucene这个好东西,心头一块大石头算是落地了。没想到,等到要在开发服务器的Linux上安装这个东西的时候,可费了功夫了。再改Linux PyLucene的配置文件,根据生成的错误消息猜了好几次才终于可以编译了。

在向大家详细介绍Linux PyLucene之前,首先让大家了解下Linux PyLucene,然后全面介绍Linux PyLucene,希望对大家有用。下一个项目准备用Python+Django来完成,先做些技术准备。数据库方面用Django已经试验的差不多了,但是似乎性能很差。

自己编译了Mysql,用虚拟机测试,生成1000个用户,1000篇文章用时80秒,这种并发性能恐怕没有办法让人满意。(每篇文章需要单独生成Tag和文章与Tag的对应关系,涉及8次数据库操作。)花了一天时间试验InnoDB和MyIsam的区别,但是似乎没有影响,开不开Transaction都一样。先不管它了,也许和我的机器硬件有关系,硬件的sync关不掉。看官方的说法,SlashDot用Django可以实现每秒800条数据的插入速度。

网站肯定要用到全文检索,目前唯一的全文检索解决方案就是Lucene了,.Net上也有Lucene.Net可以选。搜索了一下,发现了Linux PyLucene,这个Python上的Lucene实现。似乎是使用Python对Lucene进行了一次重新包装。

下载了它的Windows版本,安装比较简单,直接把几个库文件复制到对应的Lib目录就行了。运行了一下Sample目录下的测试文件,先是用IndexFiles和SearchFiles试了一下,SearchFiles是接收参数来搜索的,但是我没有办法输入中文,会出现错误提示。后来把要搜索的词直接放到文件里面去,不报错了,但是搜索不出来。本以为Linux PyLucene不支持中文,正在纳闷豆瓣的搜索是怎么做的,突然发现了一个好东西。

看了一下sample目录下的LuceneInAction目录,里面居然有个ChineseTest文件。它调用的是另一个目录下的测试文件,测试一个汉字的搜索,运行了一下,居然是成功的。再看了一下IndexFiles,里面读文件用的编码是英文编码,改成GB2312,OK,可以搜索到了。

但是只能搜索单字,不能按词搜索。只要输入两个字就出错。再比较一下Test文件,Query的生成方法不一样,TermQuery似乎是单元搜索,不支持词搜索,换成了QueryParser,成功了。但是还有一个小问题,比如搜索“中华”,在文章里,在中和华中间随便加多少空格和回车都没有关系,照样可以搜索到。但是加入其它字或者英文字母以后就搜索不到了。这个影响不大,毕竟人们常用的搜索都是自然词。

有了Linux PyLucene这个好东西,心头一块大石头算是落地了。没想到,等到要在开发服务器的Linux上安装这个东西的时候,可费了功夫了。

官方的下载包做的很奇怪,ubuntu, debian, gentoo都有对应的二进制包可用,但是Redhat就没有,只能用源码包编译,而它的编译方式又做的极其简陋,没有configure文件,只有Makefile。按照说明,需要自己编辑Makefile,去掉你需要的注释行,修改参数,然后直接Make。但是里面有一个对DB的引用,检查了一下,BerkeleyDB似乎在CentOS4里面没有,只好自己去官方网站下载了4.4.20的源码,先编译安装它。虽然最新版是4.5.20,但是怕不兼容,所以还是用它配置文件里推荐的这个。编译这个东西也挺奇怪,不过还好,毕竟有官方文档一步步的说明,解压后需要进入build_unix目录,然后调用../dist/configure来配置,然后make && make install。指定prefix失败。装完了这个东西,再改Linux PyLucene的配置文件,根据生成的错误消息猜了好几次才终于可以编译了。最终需要改的地方为:
1、取消Linux那一段的注释。
2、PREFIX_PYTHON是你的Python的目录。因为我的Python是自己编译安装的,所以这里需要改一下。
3、DB=这个我指向了BerkeleyDB的源码目录才通过编译的(还好没删)。

其它的不用改。编译到一半报错,有一个libgcj.a文件找不到,到/usr/lib下找了一下没有这个文件,但是有个差不多的.so,于是做了个ln -s,居然就通过编译了。然后make install的时候又有问题,提示libgcc_s.so.1找不到,这个是Makefile里面的LIB_INSTALL参数指定的,我不知道它的意义在哪里,最后我也没找到这个文件,但是直接进入Sample目录运行了一下测试文件,居然就成功了。真TMD。这就是Linux吗?终于可以安心的研究Django了。似乎Ruby On Rails还没有支持中文全文检索的模块吧?

【编辑推荐】

  1. Linux wget命令行的下载工具
  2. Linux分区命名将更加清晰详细
  3. Linux分区方案最节省的分区方案
  4. Linux mysql命令安装允许远程连接
  5. Ubuntu Linuxc系統狀態安裝步驟
责任编辑:佚名 来源: CSDN
相关推荐

2010-08-27 10:40:58

Linux DHCP服

2010-08-06 13:06:28

NFS服务器

2010-08-23 15:51:36

DHCP服务器Linux

2010-05-18 18:16:28

IIS服务器

2010-08-03 13:26:36

linux搭建NFS服

2009-02-18 13:43:00

2009-09-30 11:14:52

2011-09-01 17:32:11

Linux服务器

2009-02-18 13:44:00

2009-09-17 16:06:18

2009-09-08 13:48:13

NFS服务器

2009-06-14 18:37:53

Linux刀片服务器安装

2017-12-18 14:27:26

LinuxDNS服务器安装、配置和维护

2010-09-14 11:09:36

Linux TFTP服

2011-01-21 09:54:44

LinuxSendmail

2010-03-03 15:49:38

Linux Oracl

2010-09-28 15:56:49

2019-09-19 14:44:18

LinuxWindows操作系统

2021-01-29 14:41:43

Nginx直播服务器rtmp

2020-11-11 15:36:51

服务器
点赞
收藏

51CTO技术栈公众号