IPB 3.2.3 开启SPHINX+安装CORESEEK 完美解决IPB中文搜索问题

本帖由 Xiao.T2011-12-11 发布。版面名称:IP.Board 综合交流

  1. Xiao.T

    Xiao.T 管理员 技术员

    目前IPB 3.x 已经支持中文搜索(关闭全文搜索),但不支持全文搜索,而且效率很低,感觉很不爽,看到IPB自带Sphinx模块,我就尝试了下利用Coreseek中文检索引擎来解决中文搜索问题.

    我把操作过程记录下,以便日后使用.


    操作环境

    1.首先安装IPB 3.x 前把当前数据库编码改成utf8_general_ci,安装完成后编辑配置文件conf_global.php



    $INFO['sql_charset'] = ‘ ‘;

    改成

    $INFO['sql_charset'] = ‘utf8′;

    然后登陆后台设置搜索→选择Sphinx,然后保存.在点击”rebuild your sphinx.conf file” 下载Sphinx.conf配置文件,备用.

    2.开始安装Coreseek 4.1 测试版 2011-10-18版本

    登陆服务器

    安装必备

    32bit

    coreseek安装需要预装的软件:yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel
    64bit
    coreseek安装需要预装的软件:yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel
    cd /opt

    代码:
    wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz
    tar zxvf coreseek-4.1-beta.tar.gz

    cd coreseek-4.1-beta

    ##安装mmseg
    代码:
    $ cd mmseg-3.2.14
    $ ./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决
    $ ./configure –prefix=/usr/local/mmseg3
    $ make && make install
    $ cd ..
    ##安装coreseek
    代码:
    $ cd csft-4.1
    $ sh buildconf.sh #输出的warning信息可以忽略,如果出现error则需要解决
    ./configure –prefix=/usr/local/coreseek –without-unixodbc –with-mmseg –with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ –with-mmseg-libs=/usr/local/mmseg3/lib/ –with-mysql
    $ make && make install
    $ cd .
    在复制sphinxapi.php
    cp /opt/coreseek-4.1-beta/csft-4.1/api/sphinxapi.php /www/ #到你IPB目录根

    安装完成,如果出现错误请看官方详细文档BSD/Linux下的安装测试
    建立Sphinx.conf文件
    vim
    我的配置文件,你可以根据你自己IPB后台下载的Sphinx.conf进行对比,主要添加了Coreseek分词处理支持.
    有以下几项修改和添加
    还有要修改日志的目录
    代码:
    charset_dictpath = /usr/local/mmseg3/etc/
    charset_type = zh_cn.utf-8
    min_word_len = 1
    min_infix_len = 1
    代码:
    #############################################################################
    ## data source definition
    #############################################################################
     
    source ziyipb_source_config
    {
    #setup
    type = mysql
    sql_host = 127.0.0.1
    sql_user = 数据库用户名
    sql_pass = 数据库密码
    sql_db = 数据库名
    sql_port = 3306
    }
     
     
    ############################### --- TAGS --- ################################
     
    source ziycore_tags_search_main : ziyipb_source_config
    {
    # Set our forum PID counter
    sql_query_pre = SET NAMES utf8
    sql_query_pre = REPLACE INTO cache_store VALUES( 'sphinx_core_tags_counter', (SELECT max(tag_id) FROM core_tags), 0, UNIX_TIMESTAMP(), 0 )
     
    # Query posts for the main source
    sql_query = SELECT t.tag_id, t.tag_id as search_id, t.tag_added, t.tag_member_id, t.tag_meta_id, t.tag_meta_parent_id, t.tag_text, t.tag_meta_app, REPLACE( t.tag_meta_area, '-', '_' ) as tag_meta_area,  \
    CONCAT( ',', p.tag_perm_text, ',') as tag_perm_text ,p.tag_perm_visible \
     FROM core_tags t \
     LEFT JOIN core_tags_perms p ON ( t.tag_aai_lookup=p.tag_perm_aai_lookup )
     
    # Fields 
    sql_attr_uint    = search_id
    sql_attr_timestamp = tag_added
    sql_attr_uint      = tag_member_id
    sql_attr_uint      = tag_meta_id
    sql_attr_uint      = tag_meta_parent_id
    sql_attr_uint    = tag_perm_visible
    sql_ranged_throttle = 0
    }
     
    source ziycore_tags_search_delta : ziycore_tags_search_main
    {
    # Override the base sql_query_pre
    sql_query_pre = SET NAMES utf8
    sql_query_pre = 
     
    # Query posts for the main source
    sql_query = SELECT t.tag_id, t.tag_id as search_id, t.tag_added, t.tag_member_id, t.tag_meta_id, t.tag_meta_parent_id, t.tag_text, t.tag_meta_app, REPLACE( t.tag_meta_area, '-', '_' ) as tag_meta_area,  \
    CONCAT( ',', p.tag_perm_text, ',') as tag_perm_text ,p.tag_perm_visible \
     FROM core_tags t \
     LEFT JOIN core_tags_perms p ON ( t.tag_aai_lookup=p.tag_perm_aai_lookup ) \
     WHERE t.tag_id > ( SELECT cs_value FROM cache_store WHERE cs_key='sphinx_core_tags_counter' )
    }
     
    index ziycore_tags_search_main
    {
    source = ziycore_tags_search_main
    path = /var/sphinx/ziycore_tags_search_main
    charset_dictpath = /usr/local/mmseg3/etc/
    charset_type = zh_cn.utf-8
     
    docinfo = extern
    mlock = 0
    morphology = none
    min_word_len = 2
    html_strip = 0
    infix_fields    = tag_text
    min_infix_len   = 3
    enable_star     = 1
    }
     
    index ziycore_tags_search_delta : ziycore_tags_search_main
    {
       source = ziycore_tags_search_delta
       path = /var/sphinx/ziycore_tags_search_delta
    }
     
    ################################# --- FORUM --- ##############################
    source ziyforums_search_posts_main : ziyipb_source_config
    {
    # Set our forum PID counter
    sql_query_pre = SET NAMES utf8
    sql_query_pre = REPLACE INTO cache_store VALUES( 'sphinx_forums_counter_posts', (SELECT max(pid) FROM posts), 0, UNIX_TIMESTAMP(), 0 )
     
    # Query posts for the main source
    sql_query = SELECT p.pid, p.pid as search_id, p.author_id, p.post_date, REPLACE( p.post, '-', '&\#8208') as post, p.topic_id, p.queued, \
    t.tid, LOWER(t.title) as tordinal, REPLACE( t.title, '-', '&\#8208') as title, t.views, t.posts, t.forum_id, t.last_post, t.state, t.start_date, t.starter_id, t.last_poster_id, t.topic_firstpost, \
    CASE WHEN t.approved = -1 THEN 1 ELSE 0 END AS soft_deleted, \
    CASE WHEN t.approved = -1 THEN 0 ELSE t.approved END AS approved, \
    CASE WHEN t.topic_archive_status IN (0,3) THEN 0 ELSE 1 END AS archive_status, \
    CONCAT( SUBSTRING( t.last_post, 2, 8 ), '0', LPAD( t.tid, 10, 0 ) ) as last_post_group \
     FROM posts p \
     LEFT JOIN topics t ON ( p.topic_id=t.tid )
     
    # Fields 
    sql_attr_uint = queued
    sql_attr_uint = approved
    sql_attr_uint = soft_deleted
    sql_attr_uint = archive_status
    sql_attr_uint = search_id
    sql_attr_uint = forum_id
    sql_attr_timestamp     = post_date
    sql_attr_timestamp     = last_post
    sql_attr_timestamp     = start_date
    sql_attr_uint = author_id
    sql_attr_uint = starter_id
    sql_attr_uint = tid
    sql_attr_uint = posts
    sql_attr_uint = views
    sql_attr_str2ordinal = tordinal
    sql_attr_bigint = last_post_group
    sql_attr_multi = uint tag_id from query; SELECT t.topic_firstpost, c.tag_id FROM core_tags c LEFT JOIN topics t ON (t.tid=c.tag_meta_id) WHERE c.tag_meta_app='forums' AND c.tag_meta_area='topics'
     
    sql_ranged_throttle = 0
    }
     
    source ziyforums_search_posts_delta : ziyforums_search_posts_main
    {
    # Override the base sql_query_pre
    sql_query_pre = SET NAMES utf8
    sql_query_pre = 
     
    # Query posts for the delta source
    sql_query = SELECT p.pid, p.pid as search_id, p.author_id, p.post_date, REPLACE( p.post, '-', '&\#8208') as post, p.topic_id, p.queued, \
    t.tid, LOWER(t.title) as tordinal, REPLACE( t.title, '-', '&\#8208') as title, t.views, t.posts, t.forum_id, t.last_post, t.state, t.start_date, t.starter_id, t.last_poster_id, t.topic_firstpost, \
    CASE WHEN t.approved = -1 THEN 1 ELSE 0 END AS soft_deleted, \
    CASE WHEN t.approved = -1 THEN 0 ELSE t.approved END AS approved, \
    CASE WHEN t.topic_archive_status IN (0,3) THEN 0 ELSE 1 END AS archive_status, \
    CONCAT( SUBSTRING( t.last_post, 2, 8 ), '0', LPAD( t.tid, 10, 0 ) ) as last_post_group \
     FROM posts p \
     LEFT JOIN topics t ON ( p.topic_id=t.tid ) \
     WHERE p.pid > ( SELECT cs_value FROM cache_store WHERE cs_key='sphinx_forums_counter_posts' )
     
    sql_query_killlist = SELECT pid FROM posts WHERE pid > ( SELECT cs_value FROM cache_store WHERE cs_key='sphinx_forums_counter_posts' )
    }
     
    index ziyforums_search_posts_main
    {
    source = ziyforums_search_posts_main
    path = /var/sphinx/ziyforums_search_posts_main
    charset_dictpath = /usr/local/mmseg3/etc/
    charset_type = zh_cn.utf-8
     
    docinfo = extern
    mlock = 0
    morphology = none
    min_word_len = 2
     
    html_strip = 0
    infix_fields    = post, title
    min_infix_len   = 3
    enable_star     = 1
    }
     
    index ziyforums_search_posts_delta : ziyforums_search_posts_main
    {
       source = ziyforums_search_posts_delta
       path = /var/sphinx/ziyforums_search_posts_delta
    }
     
    source ziyforums_search_archive_main : ziyipb_source_config
    {
    # Set our forum PID counter
    sql_query_pre = SET NAMES utf8
    sql_query_pre = REPLACE INTO cache_store VALUES( 'sphinx_forums_counter_archives', (SELECT max(archive_id) FROM forums_archive_posts), 0, UNIX_TIMESTAMP(), 0 )
     
    # Query posts for the main source
    sql_query = SELECT p.archive_id, p.archive_id as search_id, p.archive_author_id as author_id, p.archive_content_date as post_date, REPLACE( p.archive_content, '-', '&\#8208') as archive_content, p.archive_topic_id, p.archive_queued as queued, \
    t.tid, LOWER(t.title) as tordinal, REPLACE( t.title, '-', '&\#8208') as title, t.views, t.posts, t.forum_id, t.last_post, t.state, t.start_date, t.starter_id, t.last_poster_id, t.topic_firstpost, \
    CASE WHEN t.approved = -1 THEN 1 ELSE 0 END AS soft_deleted, \
    CASE WHEN t.approved = -1 THEN 0 ELSE t.approved END AS approved, \
    CASE WHEN t.topic_archive_status IN (0,3) THEN 0 ELSE 1 END AS archive_status, \
    CONCAT( SUBSTRING( t.last_post, 2, 8 ), '0', LPAD( t.tid, 10, 0 ) ) as last_post_group \
     FROM forums_archive_posts p \
     LEFT JOIN topics t ON ( p.archive_topic_id=t.tid )
     
    # Fields 
    sql_attr_uint = queued
    sql_attr_uint = approved
    sql_attr_uint = soft_deleted
    sql_attr_uint = archive_status
    sql_attr_uint = search_id
    sql_attr_uint = forum_id
    sql_attr_timestamp     = post_date
    sql_attr_timestamp     = last_post
    sql_attr_timestamp     = start_date
    sql_attr_uint = author_id
    sql_attr_uint = starter_id
    sql_attr_uint = tid
    sql_attr_uint = posts
    sql_attr_uint = views
    sql_attr_str2ordinal = tordinal
    sql_attr_bigint = last_post_group
    sql_attr_multi = uint tag_id from query; SELECT t.topic_firstpost, c.tag_id FROM core_tags c LEFT JOIN topics t ON (t.tid=c.tag_meta_id) WHERE c.tag_meta_app='forums' AND c.tag_meta_area='topics'
     
    sql_ranged_throttle = 0
    }
     
    source ziyforums_search_archive_delta : ziyforums_search_archive_main
    {
    # Override the base sql_query_pre
    sql_query_pre = SET NAMES utf8
    sql_query_pre = 
     
    # Query posts for the delta source
    sql_query = SELECT p.archive_id, p.archive_id as search_id, p.archive_author_id as author_id, p.archive_content_date as post_date, REPLACE( p.archive_content, '-', '&\#8208') as archive_content, p.archive_topic_id, p.archive_queued as queued, \
    t.tid, LOWER(t.title) as tordinal, REPLACE( t.title, '-', '&\#8208') as title, t.views, t.posts, t.forum_id, t.last_post, t.state, t.start_date, t.starter_id, t.last_poster_id, t.topic_firstpost, \
    CASE WHEN t.approved = -1 THEN 1 ELSE 0 END AS soft_deleted, \
    CASE WHEN t.approved = -1 THEN 0 ELSE t.approved END AS approved, \
    CASE WHEN t.topic_archive_status IN (0,3) THEN 0 ELSE 1 END AS archive_status, \
    CONCAT( SUBSTRING( t.last_post, 2, 8 ), '0', LPAD( t.tid, 10, 0 ) ) as last_post_group \
     FROM forums_archive_posts p \
     LEFT JOIN topics t ON ( p.archive_topic_id=t.tid ) \
     WHERE p.archive_id > ( SELECT cs_value FROM cache_store WHERE cs_key='sphinx_forums_counter_archives' )
     
    sql_query_killlist = SELECT archive_id FROM forums_archive_posts WHERE archive_id > ( SELECT cs_value FROM cache_store WHERE cs_key='sphinx_forums_counter_archives' )
    }
     
    index ziyforums_search_archive_main
    {
    source = ziyforums_search_archive_main
    path = /var/sphinx/ziyforums_search_archive_main
    charset_dictpath = /usr/local/mmseg3/etc/
    charset_type = zh_cn.utf-8
     
    docinfo = extern
    mlock = 0
    morphology = none
    min_word_len = 2
     
    html_strip = 0
    infix_fields    = archive_content, title
    min_infix_len   = 3
    enable_star     = 1
    }
     
    index ziyforums_search_archive_delta : ziyforums_search_archive_main
    {
       source = ziyforums_search_archive_delta
       path = /var/sphinx/ziyforums_search_archive_delta
    }
     
    ################################# --- BLOG --- ##############################
     
    source ziyblog_search_main : ziyipb_source_config
    {
    # Set our forum PID counter
    sql_query_pre = REPLACE INTO cache_store VALUES( 'sphinx_blog_counter', (SELECT max(entry_id) FROM blog_entries), 0, UNIX_TIMESTAMP(), 0 )
     
    # Query posts for the main source
    sql_query = SELECT e.entry_id, e.entry_id as search_id, e.entry_name, e.entry_name as tordinal, e.entry, e.entry_date, e.entry_author_id, e.entry_num_comments, e.blog_id, \
    b.blog_owner_only, b.blog_private, b.blog_disabled, \
      CASE WHEN e.entry_status='published' THEN 0 ELSE e.entry_author_id END AS entry_not_published, \
    CASE WHEN b.blog_owner_only=0 THEN 0 ELSE b.member_id END AS blog_owner_id, \
    CASE WHEN b.blog_authorized_users IS NULL THEN 0 ELSE 1 END AS authorized_users \
    FROM blog_entries e \
     LEFT JOIN blog_blogs b ON ( b.blog_id=e.blog_id )
     
    # Fields 
    sql_attr_uint = search_id
    sql_attr_uint = blog_owner_only
    sql_attr_timestamp = entry_date
    sql_attr_str2ordinal = tordinal
    sql_attr_str2ordinal    = entry_name
    sql_attr_uint = entry_author_id
    sql_attr_uint = entry_num_comments
    sql_attr_uint     = blog_id
    sql_attr_uint = blog_private
    sql_attr_uint = blog_disabled
    sql_attr_uint = entry_not_published
    sql_attr_uint = blog_owner_id
    sql_attr_uint = authorized_users
    sql_attr_multi = uint tag_id from query; SELECT tag_meta_id, tag_id FROM core_tags WHERE tag_meta_app='blog' AND tag_meta_area='entries'
    sql_ranged_throttle = 0
    }
     
    source ziyblog_search_delta : ziyblog_search_main
    {
    # Override the base sql_query_pre
    sql_query_pre = 
     
    # Query posts for the delta source
    sql_query = SELECT e.entry_id, e.entry_id as search_id, e.entry_name, e.entry_name as tordinal, e.entry, e.entry_date, e.entry_author_id, e.entry_num_comments, e.blog_id, b.blog_owner_only, b.blog_private, b.blog_disabled, \
      CASE WHEN e.entry_status='published' THEN 0 ELSE e.entry_author_id END AS entry_not_published, \
    CASE WHEN b.blog_owner_only=0 THEN 0 ELSE b.member_id END as blog_owner_id, \
    CASE WHEN b.blog_authorized_users IS NULL THEN 0 ELSE 1 END AS authorized_users \
    FROM blog_entries e \
     LEFT JOIN blog_blogs b ON ( b.blog_id=e.blog_id ) \
     WHERE e.entry_id > ( SELECT cs_value FROM cache_store WHERE cs_key='sphinx_blog_counter' ) 
    }
     
    index ziyblog_search_main
    {
    source = ziyblog_search_main
    path = /var/sphinx/ziyblog_search_main
    charset_dictpath = /usr/local/mmseg3/etc/
    charset_type = zh_cn.utf-8
     
    docinfo = extern
    mlock = 0
    morphology = none
    min_word_len = 2
     
    html_strip = 0
    infix_fields    = entry_name, entry
    min_infix_len   = 3
    enable_star     = 1
    }
     
    index ziyblog_search_delta : ziyblog_search_main
    {
       source = ziyblog_search_delta
       path = /var/sphinx/ziyblog_search_delta
    }
     
    source ziyblog_comments_main : ziyipb_source_config
    {
    # Set our forum PID counter
    sql_query_pre = REPLACE INTO cache_store VALUES( 'sphinx_blog_comments_counter', (SELECT max(comment_id) FROM blog_comments), 0, UNIX_TIMESTAMP(), 0 )
     
    # Query posts for the main source
    sql_query = SELECT c.comment_id, c.comment_id as search_id, c.member_id as comment_member_id, c.comment_date, c.comment_approved, c.comment_text, \
    e.entry_id, e.entry_name as tordinal, e.entry_date, e.entry_author_id, e.entry_num_comments, e.blog_id, \
    b.blog_owner_only, b.blog_private, b.blog_disabled, \
      CASE WHEN e.entry_status='published' THEN 0 ELSE e.entry_author_id END AS entry_not_published, \
    CASE WHEN b.blog_owner_only=0 THEN 0 ELSE b.member_id END AS blog_owner_id, \
    CASE WHEN b.blog_authorized_users IS NULL THEN 0 ELSE 1 END AS authorized_users, \
    CONCAT(e.entry_last_comment_date, '.', e.entry_id ) as last_post_group \
    FROM blog_comments c \
     LEFT JOIN blog_entries e ON ( c.entry_id=e.entry_id ) \
     LEFT JOIN blog_blogs b ON ( b.blog_id=e.blog_id )
     
    # Fields 
    sql_attr_uint = search_id
    sql_attr_uint = entry_id
    sql_attr_uint = blog_owner_only
    sql_attr_timestamp = entry_date
    sql_attr_str2ordinal = tordinal
    sql_attr_uint = entry_author_id
    sql_attr_uint = entry_num_comments
    sql_attr_uint     = blog_id
    sql_attr_uint = blog_private
    sql_attr_uint = blog_disabled
    sql_attr_uint = entry_not_published
    sql_attr_uint = blog_owner_id
    sql_attr_uint = authorized_users
    sql_attr_uint = last_post_group
    sql_attr_timestamp = comment_date
    sql_attr_uint = comment_member_id
    sql_attr_uint = comment_approved
    sql_ranged_throttle = 0
    }
     
    source ziyblog_comments_delta : ziyblog_comments_main
    {
    # Override the base sql_query_pre
    sql_query_pre = 
     
    # Query posts for the delta source
    sql_query = SELECT c.comment_id, c.comment_id as search_id, c.member_id as comment_member_id, c.comment_date, c.comment_approved, c.comment_text, \
    e.entry_id, e.entry_name as tordinal, e.entry_date, e.entry_author_id, e.entry_num_comments, e.blog_id, \
    b.blog_owner_only, b.blog_private, b.blog_disabled, \
      CASE WHEN e.entry_status='published' THEN 0 ELSE e.entry_author_id END AS entry_not_published, \
    CASE WHEN b.blog_owner_only=0 THEN 0 ELSE b.member_id END AS blog_owner_id, \
    CASE WHEN b.blog_authorized_users IS NULL THEN 0 ELSE 1 END AS authorized_users, \
    CONCAT(e.entry_last_comment_date, '.', e.entry_id ) as last_post_group \
    FROM blog_comments c \
     LEFT JOIN blog_entries e ON ( c.entry_id=e.entry_id ) \
     LEFT JOIN blog_blogs b ON ( b.blog_id=e.blog_id ) \
     WHERE c.comment_id  ( SELECT cs_value FROM cache_store WHERE cs_key='sphinx_downloads_counter' )
    }
     
    index ziydownloads_search_main
    {
    source = ziydownloads_search_main
    path = /var/sphinx/ziydownloads_search_main
    charset_dictpath = /usr/local/mmseg3/etc/
    charset_type = zh_cn.utf-8
     
    docinfo = extern
    mlock = 0
    morphology = none
    min_word_len = 2
     
    html_strip = 0 
    }
     
    index ziydownloads_search_delta : ziydownloads_search_main
    {
       source = ziydownloads_search_delta
       path = /var/sphinx/ziydownloads_search_delta
    }
     
    source ziydownloads_comments_main : ziyipb_source_config
    {
    # Set our forum PID counter
    sql_query_pre = REPLACE INTO cache_store VALUES( 'sphinx_downloads_comments_counter', (SELECT max(comment_id) FROM downloads_comments), 0, UNIX_TIMESTAMP(), 0 )
     
    # Query posts for the main source
    sql_query = SELECT c.comment_id, c.comment_id as search_id, c.comment_mid as comment_member_id, c.comment_date, c.comment_open, c.comment_text, \
    f.*, f.file_name as fordinal, REPLACE( f.file_name, '-', '&\#8208') as file_name, REPLACE( f.file_desc, '-', '&\#8208') as file_desc, cc.field_1 \
     FROM downloads_comments c \
     LEFT JOIN downloads_files f ON ( c.comment_fid=f.file_id ) \
     LEFT JOIN downloads_ccontent cc ON (cc.file_id=f.file_id) 
     
    # Fields
    sql_attr_uint = search_id
    sql_attr_uint = file_id
    sql_attr_uint = file_cat
    sql_attr_uint = file_open
    sql_attr_uint = file_views
    sql_attr_uint = file_rating
    sql_attr_uint = file_downloads
    sql_attr_uint = comment_open
    sql_attr_uint = comment_member_id
    sql_attr_timestamp = comment_date
    sql_attr_timestamp = file_updated
    sql_attr_timestamp = file_submitted
    sql_attr_uint = file_submitter
    sql_attr_str2ordinal = fordinal
    sql_attr_float = file_cost
    sql_ranged_throttle = 0
    }
     
    source ziydownloads_comments_delta : ziydownloads_comments_main
    {
    # Override the base sql_query_pre
    sql_query_pre = 
     
    # Query posts for the delta source
    sql_query = SELECT c.comment_id, c.comment_id as search_id, c.comment_mid as comment_member_id, c.comment_date, c.comment_open, c.comment_text, \
    f.*, f.file_name as fordinal, REPLACE( f.file_name, '-', '&\#8208') as file_name, REPLACE( f.file_desc, '-', '&\#8208') as file_desc, cc.field_1 \
     FROM downloads_comments c \
     LEFT JOIN downloads_files f ON ( c.comment_fid=f.file_id ) \
     LEFT JOIN downloads_ccontent cc ON (cc.file_id=f.file_id) \
     WHERE c.comment_id
     
    已获得 xinli_zhao 的点赞。
  2. photolife

    photolife 普通会员

    xt很用功啊,偶也想玩ipb啦,有演示看看不
     
  3. Xiao.T

    Xiao.T 管理员 技术员

    呵呵,没事玩玩而已, 目前www.ziy.cc 使用的就是sphinx
     
  4. penglu8899

    penglu8899 普通会员

    呵呵:) 非常的感谢,支持。
     
  5. xinli_zhao

    xinli_zhao 普通会员

    sphinx用下来效果如何?
    昨天搞了半天,从XF导入,头像功能一直不正常
     
  6. xinli_zhao

    xinli_zhao 普通会员

    找到原因了
    头像导入时路径后面必须要加上/才行
     
  7. 漂亮的石头

    漂亮的石头 ZIY IPB 志愿者

    sphinx-for-chinese 跟coreseek 哪个好用呢~
     
  8. Xiao.T

    Xiao.T 管理员 技术员

    力挺 coreseek 比较好用啊
     
  9. apnic

    apnic 普通会员

    请教一下,sphinx资源占用怎么样?
     
正在加载...