sphinxthinking-sphinxdjango-sphinx

Wildcard search issue sphinx


I'm getting the following error while trying a wildcard(*) enabled search in Sphinx 2.0.6

index products: syntax error, unexpected $undefined near '*'

My search term is iphone 4s*

It's using the products index as defined below.

index users
{
  enable_star = 1
  docinfo = extern
  morphology = stem_en
  charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
  ignore_chars = U+0021..U+002F,U+003A..U+003F,U+0060
  charset_type = utf-8
  html_strip = 0

  source = gdgt_user
  path = /var/lib/sphinxsearch/data/gdgt/users
  min_infix_len = 3
  min_word_len = 3
}

index products : users
{
  enable_star = 1
  min_infix_len = 1
  min_word_len = 1
  source = gdgt_products
  path = /var/lib/sphinxsearch/data/gdgt/products
}

I am using the php api that can be found in the source tar ball. I am able to see the error when using search CLI.

search -c app/config/sphinx.compiled.conf -i products -e "ipho*"
Sphinx 2.0.6-id64-release (r3473)
Copyright (c) 2001-2012, Andrew Aksyonoff
Copyright (c) 2008-2012, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file 'app/config/sphinx.compiled.conf'...
index 'products': search error: .

My php code looks like

$client = new SphinxClient();
$client->SetServer($serverIp, $serverPort);
$client->SetMaxQueryTime(5000);
$client->SetSortMode(SPH_SORT_RELEVANCE);
$client->SetMatchMode(SPH_MATCH_EXTENDED);
$res = $client->query('ipho*', 'products');

var_dump($res, $client->getLastError(), $client->getLastWarning());

Solution

  • The issue is that star(*) for wildcard is also in your ignore_chars (U+002A).

    Update it to:

    ignore_chars = U+0021..U+0029,U+002B..U+002F,U+003A..U+003F,U+0060