Sphinx搜索结果提供0个匹配项

Sphinx搜索结果提供0个匹配项,sphinx,java,Sphinx,Java,我总共有720个sphinx索引,大小为1.21GB。这里附加了一个服务的所有索引。它需要800MB的内存。我使用sql_attr_str2 ordinal来存储字符串,所以RAM减少了,现在只需要17MB。但这里的问题是搜索结果给出0个匹配项。搜索是使用sphinx索引中的JavaAPI应用的。 Conf文件和java代码如下: searchd{ listen = 516 log = D:\programs\spinx\sp

我总共有720个sphinx索引,大小为1.21GB。这里附加了一个服务的所有索引。它需要800MB的内存。我使用sql_attr_str2 ordinal来存储字符串,所以RAM减少了,现在只需要17MB。但这里的问题是搜索结果给出0个匹配项。搜索是使用sphinx索引中的JavaAPI应用的。 Conf文件和java代码如下:

searchd{    
 listen         = 516   
 log                =    D:\programs\spinx\spinxexperiment\project\log\searchd.log
query_log       = D:\programs\spinx\spinxexperiment\project\log\query.log
read_timeout    = 5
max_children    = 30
pid_file        = D:\programs\spinx\spinxexperiment\project\log\searchd.pid
max_matches     = 1000
seamless_rotate = 0
preopen_indexes = 0
unlink_old      = 1
ondisk_dict_default = 1
mva_updates_pool   = 1M
workers         = threads # for RT to work}

source webusagedatagroup20120301{
type            = pgsql
    sql_host        = 127.0.0.1
    sql_user        = postgres
sql_pass        = 
sql_db          = iviewdb
sql_port        = 5432
sql_query       = SELECT id,username as username_ord,domain as  domain_ord,application,hits,bytes from webusagedata1        
sql_attr_str2ordinal    = username_ord
sql_attr_str2ordinal    = domain_ord
sql_attr_str2ordinal    = application
sql_attr_bigint     = hits
sql_attr_bigint     = bytes}

  index webusagedatagroup20120301{
source  = webusagedatagroup20120301
path    = D:\programs\spinx\spinxexperiment\project\data\20120301\group\webusagedatagroup20120301
preopen         = 0
docinfo         = inline
ondisk_dict     = 1
charset_type        = sbcs
rt_field        = username
rt_field        = domain
rt_field        = application
rt_attr_bigint      = hits
rt_attr_bigint      = bytes}
代码:

client = new SphinxClient("127.0.0.1",516);         
client.SetMatchMode(SphinxClient.SPH_MATCH_PHRASE);
query=prepareQuery();
client.SetLimits(0, 20);            
client.SetMaxQueryTime(0);
client.SetConnectTimeout(60000);
client.SetSelect("*, SUM(bytes) as bytes_total");           
client.SetGroupBy("application", SphinxClient.SPH_GROUPBY_ATTR,"username asc");
SphinxResult res = client.Query("divyesh.modi", "webusagedatagroup20120130");

正如斯芬克斯论坛上讨论的那样。索引需要一个或多个字段才能工作。您的索引没有字段,因此将无效

由于您似乎希望能够按用户名进行搜索,因此需要将用户名设置为字段和序号属性(这样您就可以进行分组,而不必使用字符串属性)


您需要在sql_查询中记录两次列,一次用于字段,一次用于属性

当我使用sql\u字段\u字符串时,它会在创建索引时出错,因为我使用了docinfo作为“内联”。那么不要使用sql\u字段\u字符串!我想你已经决定不使用字符串属性了。