查询错误:没有字段' face'在架构中找到

时间:2018-03-16 19:19:36

标签: sphinx

我在mysql中将bigint列命名为face。这是我的sphinx.conf

source src1
{
    type            = mysql
    sql_host        = localhost
    sql_user        = root
    sql_pass        = pass
    sql_db          = nums
    sql_port        = 3306  # optional, default is 3306

    sql_query       = SELECT id,id AS id_attr,tel,name,sex,face from tel
    sql_attr_uint   = id_attr
    sql_attr_bigint = face
}

index num
{
    rt_attr_bigint  = face
    rt_field = face
    source          = src1
    path            = C:/sphinx/bin/data/numaralar
}

我可以通过姓名和电话进行搜索,但不能通过面部搜索。

致命错误:未捕获的异常' Foolz \ SphinxQL \ Exception \ DatabaseException'消息' [1064]索引号:查询错误:无字段' face'在模式中找到[SELECT * FROM nums WHERE MATCH('(@ face 123456)')LIMIT 0,10 OPTION max_matches = 5000; SHOW META]'在.. ..

为什么会这样?

1 个答案:

答案 0 :(得分:1)

您正尝试将该值用作字段。 @ fulltext运算符(实际上是整个MATCH()全文查询,仅对字段进行操作。

您已将face定义为属性。属性在全文查询中不起作用。

可以

  1. face成为字段 而不是(删除sql_attr_bigint)或将两者设为属性和字段。 (为此,必须复制它,就像你复制了id,一个用于字段,一个用于属性。或者使用sql_field_string,但这会产生一个字符串属性)
    1. 请按属性使用过滤器。真的不知道如何在Foolz做到这一点。但是SphinxQL查询类似于
    2. SELECT * FROM nums WHERE `face` = 123456 LIMIT 0, 10