有没有一种方法可以查询Sphinx中具有非空特定字段的记录?
我在Sphinx 0.9.9中使用SPH_MATCH_EXTENDED2匹配模式,我想编写一个搜索查询,查找在特定字段中包含任何内容的所有记录。我尝试了以下方法,但没有成功:有没有一种方法可以查询Sphinx中具有非空特定字段的记录?,sphinx,Sphinx,我在Sphinx 0.9.9中使用SPH_MATCH_EXTENDED2匹配模式,我想编写一个搜索查询,查找在特定字段中包含任何内容的所有记录。我尝试了以下方法,但没有成功: @MyField * @MyField !"" 我想我可以在我的索引中添加一个字段,专门检查这个字段,并根据那个字段进行查询,但我更希望有更多的灵活性——能够通过查询语法实现这一点真是太好了 有什么想法吗?不需要更新/更改数据库,只需修改构建索引/源的sql查询即可。e、 g sql_query = SELECT id
@MyField *
@MyField !""
我想我可以在我的索引中添加一个字段,专门检查这个字段,并根据那个字段进行查询,但我更希望有更多的灵活性——能够通过查询语法实现这一点真是太好了
有什么想法吗?不需要更新/更改数据库,只需修改构建索引/源的sql查询即可。e、 g
sql_query = SELECT id, \
IF(title!='',title,'this_field_is_actually_blank') \
FROM table
然后,在前面海报的评论之后,只需在sphinx查询中使用否定
或者,您可以创建一个动态sphinx属性来进行过滤。e、 g
sql_query = SELECT id, \
title, \
IF(title!='',1,0) AS title_is_not_blank \
FROM table
sql_attr_uint = title_is_not_blank
然后确保在每次搜索时过滤title\u为\u not\u blank=1
或者,根据您的应用程序的不同,如果您从不需要包含空白内容的内容,只需使用sql_queryWHERE
子句来删除即可。e、 g
sql_query = SELECT id, \
title \
FROM table
WHERE title!=''
使用2个单独的索引;一个包含所有数据,一个仅包含您关心的此单元格中数据的行,然后您可以指定在查询时使用哪个索引。简单地说,只需在sphinx配置中的sql_查询中添加常量:
sql_query = SELECT `id`, `title`, 1 as `all` FROM table
然后,您可以在扩展查询模式下使用simply query for:
@all "1"
它是有效的