2014-02-24 58 views
0

在指定使用SPH_SORT_TIME_SEGMENTS的文檔中,我可以對我的時間戳DESCENDED進行排序,但我如何對我的時間戳ASCENDED進行排序?我嘗試使用SPH_SORT_ATTR_ASC但它顯示空結果。我嘗試過使用 「MODIFIED_DATE」(使用sql_attr_timestamp)和 「integered_modified_date」(使用sql_attr_bigint)以及兩者的它仍然顯示沒有結果獅身人面像排序日期升序?

,這裏是我的配置

source member_private_messages { 
type = mysql 
sql_host = 192.168.7.101 
sql_user = root 
sql_pass = 
sql_db = proto_db 

sql_query = SELECT \ 
    b.message_id as primary_message_id, \ 
    b.message_id as message_id, \ 
    CONCAT(a.first_name, ' ',a.last_name) AS `from` , \ 
    CONCAT(c.first_name, ' ',c.last_name) AS `to` , \ 
    message_from_id, \ 
    deliver_object_id, \ 
    message_title, \ 
    message_content, \ 
    UNIX_TIMESTAMP(modified_date) AS modified_date, \ 
    UNIX_TIMESTAMP(modified_date) AS integered_modified_date \ 
FROM tbl_member a JOIN \ 
tbl_messages b JOIN \ 
tbl_member c ON a.register_id = b.message_from_id AND b.deliver_object_id = c.register_id 

# FOR SORT BY or FILTER 

sql_attr_bigint = message_id 
sql_attr_bigint = message_from_id 
sql_attr_bigint = deliver_object_id 
sql_attr_string = message_title 
sql_attr_string = message_content 
sql_attr_timestamp = modified_date 
sql_attr_bigint = integered_modified_date 
} 

這裏是我的PHP

<?php 
require_once "sphinxapi.php"; 

$client = new SphinxClient(); 

$client->SetServer('localhost', 9312); 
$client->SetConnectTimeout(30); 
$client->SetArrayResult(true); 

// Sort the index 
$client->SetMatchMode(SPH_SORT_ATTR_ASC ,'modified_date'); //RETURNS NULL 

// Query the index 
$results = $client->Query('','member_private_messages_index'); 

// Output the matched results in raw format 
var_dump($results['matches']); 

這裏是我的數據庫結構(它富人2個簡單的數據)

CREATE TABLE `tbl_member` (
    `member_id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `register_id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
    `register_type` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
    `first_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
    `last_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
    `registration_date` datetime DEFAULT NULL, 
    `verification_date` datetime DEFAULT NULL, 
    `update_date` datetime DEFAULT NULL, 
    PRIMARY KEY (`member_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC; 

CREATE TABLE `tbl_messages` (
    `message_id` int(255) unsigned NOT NULL AUTO_INCREMENT, 
    `message_from_id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
    `message_from_type` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
    `is_public` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, 
    `message_type` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, 
    `deliver_object_id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
    `deliver_object_type` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, 
    `message_title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
    `message_content` blob, 
    `created_date` datetime DEFAULT NULL, 
    `modified_date` datetime DEFAULT NULL, 
    PRIMARY KEY (`message_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC; 

回答

2

$ client-> SetMatchMode(SPH_SORT_ATTR_ASC,'modified_date'); //返回NULL

你爲什麼試圖通過setMatchMode定義一個排序模式?肯定應該使用setSortMode

btw它不應該返回任何。它只是爲稍後的查詢設置一個值。