有没有一种方法可以查询Sphinx中具有非空特定字段的记录?

有没有一种方法可以查询Sphinx中具有非空特定字段的记录?,sphinx,Sphinx,我在Sphinx 0.9.9中使用SPH_MATCH_EXTENDED2匹配模式,我想编写一个搜索查询,查找在特定字段中包含任何内容的所有记录。我尝试了以下方法,但没有成功: @MyField * @MyField !"" 我想我可以在我的索引中添加一个字段,专门检查这个字段,并根据那个字段进行查询,但我更希望有更多的灵活性——能够通过查询语法实现这一点真是太好了 有什么想法吗?不需要更新/更改数据库,只需修改构建索引/源的sql查询即可。e、 g sql_query = SELECT id

我在Sphinx 0.9.9中使用SPH_MATCH_EXTENDED2匹配模式,我想编写一个搜索查询,查找在特定字段中包含任何内容的所有记录。我尝试了以下方法,但没有成功:

@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_query
WHERE
子句来删除即可。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"
它是有效的