直接调用clucene核心源码src为mysql数据库建立索引,以clucene-0.9.21b为例。
(/clucene-core-0.9.21b/src/demo/中有示例,demo为最好的程序参考)
需要clucene核心源码CLucene.h和CLucene文件夹,从网上download一个makefile模板(我使用的是实验室一个makefile模板),修改其中可配置部分即可:
## Customizable Section: adapt those variables to suit yourprogram.
##==========================================================================
# The pre-processor and compileroptions.
MY_CFLAGS=
# The linker options.
MY_LIBS
# The pre-processor options used by the cpp (man cpp formore).
CPPFLAGS
# The options used in linking as well as inany direct use of ld.
LDFLAGS
# The directories in which source files reside.
# If not specified, only the current directory will beserached.
SRCDIRS
# The executable file name.
# If not specified, current directory name or `a.out' will beused.
PROGRAM
注意:一定要添加mysql编译所需lib文件:-L/usr/lib/mysql 和-lmysqlclient,否则会能包含<mysql/mysql.h>头文件,但是链接不上mysql的接口函数。
可能出现的问题:
1.数据库接口函数unreferenced,向makefile中添加-L/usr/lib/mysql 和-lmysqlclient应该就能解决
2..d文件错误,很大可能是编译单个cpp文件时,文件中头文件路径有问题,链接不上。修改路径后,删除相应.d文件再make
3. 分词一直添加不上去,总是error:collect2 ld XXXX, 最后试出来要添加-lICTCLAS50链接库
下面是关于中科院分词ICTCLAS50使用的部分注意事项:
makefile需要的配置如下:
main: main.cpp text_pro.cpp ICTCLAS50.h
g++ -g main.cpp text_pro.cpp ./libICTCLAS50.so -lICTCLAS50
-lICTCLAS50一般可以不要,但有时(例如上面情况)必须添加。
有时候makefile无错误了 但是编译还是有问题,此时可试着把
libICTCLAS50.so拷贝到usr/local/lib
libICTCLAS50.a拷贝到usr/local/lib
然后再vim /etc/ld.so.conf: 添加一行/usr/local/lib,然后再ldconfig