Search code examples
searchsphinx

Sphinx search gives no results


I have a new index on a new table which is not returning any results. This is very odd, and I've never run into this problem before. Other indices (which are built almost identically) are searchable just fine from the search CLI and my API.

Here's my conf file

source topicalindex
{
  type            = pgsql
  sql_host        = localhost
  sql_user        = user
  sql_pass        = password
  sql_db          = db
  sql_port        = 5432  # optional, default is 3306
  sql_query       = SELECT id, topic, reference, start_ref, end_ref, see_also_html FROM my_topicalindex
  sql_attr_uint   = topic
  sql_attr_uint   = reference
}


index topicalindex_index
{
  source          = topicalindex
  path            = /path/to/data/topical_index
  docinfo         = extern
  charset_type    = utf-8
}

indexer
{
  mem_limit       = 32M
}

searchd
{
  listen          = 3312
  log             = /path/to/searchd.log
  query_log       = /path/to/query.log
  read_timeout    = 5
  max_children    = 30
  pid_file        = /usr/local/var/searchd.pid
  max_matches     = 30000
  seamless_rotate = 1
  preopen_indexes = 0
  unlink_old      = 1
}

Here's a excerpt proving there's content in the DB

[myself]:myapp(master)$ psql -d mydb -h localhost
psql (9.2.2)
Type "help" for help.

esv=# SELECT * FROM my_topicalindex LIMIT 1;
  id  |  topic  |     reference      | start_ref | end_ref | see_also_html 
------+---------+--------------------+-----------+---------+---------------
 2810 | Abraham | Genesis chs. 11–25 |   1011001 | 1025034 | blank
(1 row)

Here's the indexing process:

$ indexer --rotate --all --config /path/to/sphinx-topical.conf
Sphinx 0.9.9-rc2 (r1785)
Copyright (c) 2001-2009, Andrew Aksyonoff

using config file '/path/to/sphinx-topical.conf'...
indexing index 'topicalindex_index'...
collected 2809 docs, 0.1 MB
sorted 0.0 Mhits, 100.0% done
total 2809 docs, 75007 bytes
total 0.067 sec, 1117456 bytes/sec, 41848.54 docs/sec
total 3 reads, 0.000 sec, 47.0 kb/call avg, 0.0 msec/call avg
total 7 writes, 0.000 sec, 37.0 kb/call avg, 0.0 msec/call avg
rotating indices: succesfully sent SIGHUP to searchd (pid=79833).

And the files showing they have content

[myself]:myapp(master)$ ll /path/to/data/
total 160
drwxr-xr-x 10 myself admin   340 Aug 29 08:56 ./
drwxr-xr-x  3 myself admin   102 Jun  1  2012 ../
-rw-r--r--  1 myself admin 33708 Aug 29 08:56 topical_index.spa
-rw-r--r--  1 myself admin 51538 Aug 29 08:56 topical_index.spd
-rw-r--r--  1 myself admin   326 Aug 29 08:56 topical_index.sph
-rw-r--r--  1 myself admin 15721 Aug 29 08:56 topical_index.spi
-rw-r--r--  1 myself admin     0 Aug 29 08:56 topical_index.spk
-rw-------  1 myself admin     0 Aug 29 08:56 topical_index.spl
-rw-r--r--  1 myself admin     0 Aug 29 08:56 topical_index.spm
-rw-r--r--  1 myself admin 52490 Aug 29 08:56 topical_index.spp

and then -- my search with 0 results

[myself]:myapp(master)$ search -i topicalindex_index -a "Abraham"
Sphinx 0.9.9-rc2 (r1785)
Copyright (c) 2001-2009, Andrew Aksyonoff

using config file '/usr/local/etc/sphinx.conf'...
index 'topicalindex_index': query 'Abraham ': returned 0 matches of 0 total in 0.000 sec

words:
1. 'abraham': 0 documents, 0 hits

Why am I getting 0 results when I search "Abraham". (Strangely, I do get results when searching "a")
Is this a problem with my conf file? Is it something else?

EDIT I've noticed that when searching "a" it is only searching against those rows which do have content for the see_also_html field. The number of matches matches the count of fields which have data for each column.


Solution

  •  sql_query       = SELECT id, topic, reference, start_ref, end_ref, see_also_html FROM my_topicalindex
     sql_attr_uint   = topic
     sql_attr_uint   = reference
    
      id  |  topic  |     reference      | start_ref | end_ref | see_also_html 
    ------+---------+--------------------+-----------+---------+---------------
     2810 | Abraham | Genesis chs. 11–25 |   1011001 | 1025034 | blank
    

    You've made topic and reference integer attributes. (So they won't be included as full-text fields)

    Columns not made an attribute (excluding the first column!) are automatically fields.

    So start_ref, end_ref and see_also_html will be full-text fields, and therefore searchable.