2011-10-14 20 views
0

我不能在我的狮身人面像查询中使用@字段名,但我可以用@ *狮身人面像 - 无法使用字段属性查询

我可以查询test.documents例如,当使用@场-name属性,但不适用于我编制索引的另一个表格。

这是我的PHP:

require_once('sphinxapi.php'); 
    $this->sphinx = new SphinxClient; 
    $this->sphinx->setServer("localhost", 9312); 
    $this->sphinx->setMatchMode(SPH_MATCH_EXTENDED2); 

    //This works: 
    $result = $this->sphinx->query("@* bob"); 
    var_dump($result); 

    //This doesn't work: 
    $result = $this->sphinx->query("@artist bob"); 
    var_dump($result); 

的输出:在/ usr /地方/狮身人面像/斌/索引--all --rotate自卸行sphinxrows.txt

# === source src1 ts 1318588067 
# Fri Oct 14 10:27:47 2011 
# 
# field 0: name 
# field 1: filename 
# field 2: artist 
# sql_attr_uint = id_attr # attr 0 
# sql_attr_timestamp = date_added # attr 1 
# 

DROP TABLE IF EXISTS rows_src1; 
CREATE TABLE rows_src1 (
    id VARCHAR(32) NOT NULL, 
    id_attr VARCHAR(4096) NOT NULL, 
    date_added VARCHAR(4096) NOT NULL, 
    name VARCHAR(4096) NOT NULL, 
    filename VARCHAR(4096) NOT NULL, 
    artist VARCHAR(4096) NOT NULL, 
    KEY(id)); 

INSERT INTO rows_src1 VALUES ('6', '6', '0', 'track 1 title', 'track-1.wav', 'bob'); 
INSERT INTO rows_src1 VALUES ('70', '70', '0', 'track 2 title', 'track-2.wav', 'eric'); 

sphinx.conf中:

source src1 
{ 
     type     = mysql 

     sql_query    = \ 
       SELECT id, id AS id_attr, UNIX_TIMESTAMP(date_added) AS date_added, name, filename, artist \ 
       FROM files 

     sql_attr_uint   = id_attr 
     sql_attr_timestamp  = date_added 

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

回答

0

字段名称需要在sphinx.conf中定义。添加一个条目“rt_field”为我解决了这个问题。

0

在SQL你有 “rows_src1” 表,sphinx.conf中你有 “文件” 为表

+0

rows_src1是Sphinx索引器表,文件是我要求它索引的表。我找到了这个问题,你需要在sphinx.conf中为你希望在查询中使用的字段添加一个“rt_field”。 – StuR