一寒假,好吧我又回来了,工作找的不容易,还是留在FZ好好干吧,最近组长又安排了一个工作,内容贯穿2014年上半年,主要是CoreSeek的组建和二次开发,本周主要是搭建起CoreSeek和研读源码,2014要好好地积累知识和总结,新年第一篇博客就从这里写起吧。


一 准备工作

  • 下载并安装MySQL(需要支持mysql时安装)

  • 下载并安装LibExpat(用于xml文档的解析)

  • 下载并安装LibIConv(用于字符集的转换)

  • 下载并安装python26(需要支持python时安装)

  • 下载并安装CoreSeeK(我们研究的源码,这里采用)

  • 假定所有的软件均安装在默认目录中。


二 源代码编译

   在编译coreseek-3.2.14之前,在libsphinx工程中,加入 py_helper.cpp(h) 、 py_layer.cpp(h) 、 py_source.cpp(h) 、 tokenizer_zhcn.cpp(h) 、py_sphinx.c文件,这些文件在源代码工程中已经存在,不知何原因没有被加入到工程。


  1. 按需求修改sphinx.h头文件

    sphinx.h 头文件定义(coreseek-3.2.14)

    #define USE_MYSQL 1 /// whether to compile MySQL support

    #define USE_PGSQL 0 /// whether to compile PgSQL support

    #define USE_ODBC 0 /// whether to compile ODBC support

    #define USE_LIBEXPAT 1 /// whether to compile libexpat support

    #define USE_LIBICONV 1 /// whether to compile iconv support

    #define USE_LIBXML 0 /// whether to compile libxml support

    #define USE_LIBSTEMMER 0 /// whether to compile libstemmber support

    #define USE_WINDOWS 1 /// whether to compile for Windows

    #define USE_MMSEG 1 /// turn chinese segment on.

    #define USE_CRFSEG 0 /// turn chinese segment on.

    #define USE_PYTHON 1

    #define USE_64BIT 0

  2. 添加mysql 的include路径(C:\Program Files (x86)\MySQL\MySQL Server 5.6\include) 到所有工程 (右击 - 属性- 配置属性 - C/C++ - 常规- 附加包含目录).

  3. 添加mysql的lib路径(C:\Program Files (x86)\MySQL\MySQL Server 5.1\lib\opt) 到除 "libsphinx"之外的所有工程 (右击 - 属性- 配置属性 - 连接器- 常规-附加包含目录)

  4. 添加LibExpat的路径(C:\Program Files (x86)\Expat 2.0.1\Bin)到除 "libsphinx"之外的所有工程 (右击 - 属性- 配置属性 - 连接器- 常规-附加包含目录)

  5. 添加LibIConv 的路径(C:\Program Files (x86)\GnuWin32\lib)到除 "libsphinx"之外的所有工程 (右击 - 属性- 配置属性 - 连接器- 常规-附加包含目录)

  6. 添加python的include路径(C:\python26\include) 到所有工程 (右击 - 属性- 配置属性 - C/C++ - 常规- 附加包含目录)

  7. 添加mmseg(coreseek的源码中)的css路径({coreseek位置}\mmseg-3.2.14\src\css) 到所有工程 (右击 - 属性- 配置属性 - C/C++ - 常规- 附加包含目录).

  8. 添加mmseg(coreseek的源码中)的utils路径({coreseek位置}\mmseg-3.2.14\src\utils) 到所有工程 (右击 - 属性- 配置属性 - C/C++ - 常规- 附加包含目录).

  9. 添加mmseg(coreseek的源码中)的src路径({coreseek位置}\mmseg-3.2.14\src) 到所有工程 (右击 - 属性- 配置属性 - C/C++ - 常规- 附加包含目录).

  10. 添加expat的lib路径(C:\Program Files (x86)\Expat 2.0.1\Source\lib) 到所有工程 (右击 - 属性- 配置属性 - C/C++ - 常规- 附加包含目录).

  11. 添加LibIConv的Include路径(C:\Program Files (x86)\GnuWin32\include) 到所有工程 (右击 - 属性- 配置属性 - C/C++ - 常规- 附加包含目录).

  12. 添加python的lib路径(C:\python26\libs)到除 "libsphinx"之外的所有工程 (右击 - 属性- 配置属性 - 连接器- 常规-附加包含目录)

  13. 在网址http://download.csdn.net/detail/nextel/4577926下载iconv.lib,在coreseek的源文件夹src建文件夹lib,并将iconv.lib放入其中。

  14. 打开libcss工程({coreseek目录}\mmseg-3.2.14\src\win32\libcss05.vcproj),并将该工程的运行时库改成“多线程(/MT)”,具体:右键-》配置属性-》c/c++-》代码生成。如果为release版本编译产生libcss.lib,如果为debug版本产生libcss.lib并修改名字为libcssd.lib

  15. 将产生的libcss.lib(libcss.lib)拷贝到14步中的lib文件夹中。

  16. 添加第14步的lib路径到除 "libsphinx"之外的所有工程 (右击 - 属性- 配置属性 - 连接器- 常规-附加包含目录)

  17. 逐个对每个项目进行编译即可