这部分是为了完全理解sphinx如何工作,部分理解如何排除特定字段。
如果我有
的狮身人面像查询 SELECT ID, Title, Description, Type, Category, Price, Date, Sales FROM table;
标题,描述和类型被视为全文搜索,ID,类别,价格和日期用于排序。
我假设Sphinx KNOWS根据标题,描述等全部指定为FULLTEXT并因此忽略价格等因为它们不是FULLTEXT来运行它的关键字搜索?
所以,那说...如果我想排除所有的FULLTEXT项目,只搜索其中一个像Title这会怎么样?
答案 0 :(得分:1)
要回答您的其他问题,哪些字段可以搜索....
sql_query
中的第一列始终被视为文档ID,而所有列自动被假定为field
s。除非您具体请求attribute
个sql_attr_*
个field
定义。
Sphinx完全忽略原始数据库列的 类型 。无论如何,所有值都被转换为字符串。
提醒一下......
attribute
是全文可搜索的。并且可以使用已经提到的字段限制运算符来控制特定查询使用哪些特定的查询。
而field
s按原样存储在索引中,而不是全文可搜索的。但是,它们可用于过滤器,或用于排序和分组。属性也可以包含在结果集中。
(请注意,您可以在string attribute
和sql_field_string
之间创建一个列,以便通过{{1}}获得最佳效果
答案 1 :(得分:0)
默认情况下,MATCH('whatever text')
匹配索引中的任何文本字段。您可以通过包含字段搜索运算符@
(例如MATCH('@title whatever text')
)将其限制为仅限特定字段。要忽略所有字段,请从MATCH()
子句中忽略WHERE
。