在sphinx搜索中排除全文字段

在sphinx搜索中排除全文字段,sphinx,Sphinx,这部分是为了完全理解狮身人面像的工作原理,部分是为了理解如何排除特定字段 如果我有一个斯芬克斯的问题 SELECT ID, Title, Description, Type, Category, Price, Date, Sales FROM table; 而标题、描述和类型被视为全文搜索,ID、类别、价格和日期用于排序 我假设Sphinx知道运行它的关键字搜索是基于这样一个事实,即标题、描述等都被指定为全文,因此忽略了价格等,因为它们不是全文 所以说。。。如果我想排除所有全文项目,只搜索其

这部分是为了完全理解狮身人面像的工作原理,部分是为了理解如何排除特定字段

如果我有一个斯芬克斯的问题

 SELECT ID, Title, Description, Type, Category, Price, Date, Sales FROM table;
而标题、描述和类型被视为全文搜索,ID、类别、价格和日期用于排序

我假设Sphinx知道运行它的关键字搜索是基于这样一个事实,即标题、描述等都被指定为全文,因此忽略了价格等,因为它们不是全文


所以说。。。如果我想排除所有全文项目,只搜索其中一个,比如标题,该怎么办

默认情况下,
MATCH('which text')
匹配索引中的任何文本字段。通过包含字段搜索运算符
@
,例如
匹配(“@title which text”)
,可以将其限制为仅限于特定字段。要忽略所有字段,请从
WHERE
子句中省略
MATCH()

sql\u查询
中的第一列始终作为文档id,在之后,所有列都自动假定为
字段
s。除非您特别要求使用
sql\u attr.*
定义将它们设置为
attribute
s

Sphinx完全忽略原始数据库列的类型。所有值都将作为字符串传输


作为提醒

  • 字段
    可全文搜索。并且可以使用前面提到的字段限制运算符控制特定查询使用的特定字段

  • 属性
    s按索引中的原样存储,不可全文搜索。但是,它们可以用于过滤器中,也可以用于排序和分组。属性也可以包含在结果集中


(注意,您可以通过
sql\u field\u string
)将列同时设置为
字段和
字符串属性,以充分利用这两种属性)

您的语法稍有错误。@title必须在搜索词之前,因为限制适用于它后面的所有关键字,所以
匹配(“@title which text”)
Oh wow。。。。好吧,你是说,除非我“告诉”它项目应该是属性,斯芬克斯会认为它是一个字段,然后搜索它?如果是的话,这是至关重要的信息。谢谢