簡體   English   中英

如何用PHP顯示Sphinx搜索結果?

[英]How to show sphinx search result with php?

我在本地主機(沼澤)上安裝了獅身人面像搜索。 我想在一個簡單的html表中顯示結果。 我試圖用php連接到獅身人面像搜索,我認為它做到了,但是當我打印結果時它是0 ....但是那不是真的。 我不太了解在查詢部分是否需要輸入要搜索的詞? 我嘗試在命令窗口中進行搜索,但是效果很好,只是我不知道如何在網頁上顯示它。 而且我想使用mysql。 所以我的PHP看起來像這樣:

require ( "sphinx/api/sphinxapi.php" );
$s = new SphinxClient;
$s->setServer("localhost", 9306);
$s->setMatchMode(SPH_MATCH_ANY);
$s->setMaxQueryTime(3);

$result = $s->query("test");

var_dump($result);

這是我的迷你conf文件:

source src1
{
    type            = mysql

    sql_host        = localhost
    sql_user        = root
    sql_pass        =
    sql_db          = test
    sql_port        = 3306  # optional, default is 3306

    sql_query       = \
        SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \
        FROM documents

    sql_attr_uint       = group_id
    sql_attr_timestamp  = date_added

    sql_query_info      = SELECT * FROM documents WHERE id=$id
}


index test1
{
    source          = src1
    path            = C:/wamp/www/sphinx/data/test1
    docinfo         = extern
    charset_type        = sbcs
}

indexer
{
    mem_limit       = 32M
}


searchd
{
    listen          = 9312
    listen          = 9306:mysql41
    log         = C:/wamp/www/sphinx/log/searchd.log
    query_log       = C:/wamp/www/sphinx/log/query.log
    read_timeout        = 5
    max_children        = 30
    pid_file        = C:/wamp/www/sphinx/log/searchd.pid
    max_matches     = 1000
    seamless_rotate     = 1
    preopen_indexes     = 1
    unlink_old      = 1
    workers         = threads # for RT to work
    binlog_path     = C:/wamp/www/sphinx/data
}

您的連接和查詢可能如下所示:

$link = mysql_connect ( '127.0.0.1:9306', '', '' );
$db_selected = mysql_select_db ( 'main', $link );

然后通常是mysql查詢(就像通常那樣)

$sql = "select * from main WHERE MATCH('$queryterm') order by date desc LIMIT 0,50";
$result = mysql_query ( $sql );

或者,您可以根據需要檢索一些元信息(有關此元數據,請參見Sphinx文檔)

$metainfo = mysql_query('SHOW META');
while ( $meta = mysql_fetch_array ( $metainfo ) ) {
        $srchmeta[]=$meta;
//or whatever you want here
}

$ s-> setServer(“ localhost”,9306);

多數民眾贊成在mysql協議端口-sphinxQL。

在您的配置文件中,您可以使用sphinxAPI協議在9312上監聽sphinx。 因此,更改您的setServer行以使用9312

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM