Haystack / Whoosh搜索通过部分数字搜索返回零结果

时间:2014-05-01 18:00:56

标签: python django django-haystack whoosh

我的SearchIndex看起来像这样:

class AccountIndex(indexes.SearchIndex)
    account=indexes.CharField(model_attr='account_number')
    name=indexes.CharField(model_attr='business_name')

帐号有7个数字字符。我似乎可以对" name"进行部分搜索,但不能在" account"上进行部分搜索:

In [20]: SearchQuerySet().filter(name='Cjns, LLC')
Out[20]: [<SearchResult: accounts.soldtoaccount (pk=u'367')>]

In [21]: SearchQuerySet().filter(name='Cjns')
Out[21]: [<SearchResult: accounts.soldtoaccount (pk=u'367')>]

In [22]: SearchQuerySet().filter(account='11836052')
Out[22]: [<SearchResult: accounts.soldtoaccount (pk=u'367')>]

In [23]: SearchQuerySet().filter(account='118360')
Out[23]: []

In [24]: SearchQuerySet().filter(account='11836052')[0].account
Out[24]: u'11836052'

我知道可以在filter()中使用account__startswith,但我也希望能够使用auto_query搜索部分帐号:

In [14]: SearchQuerySet().auto_query('Cjn')
Out[14]: [<SearchResult: accounts.soldtoaccount (pk=u'367')>]

In [15]: SearchQuerySet().auto_query('11836052')
Out[15]: [<SearchResult: accounts.soldtoaccount (pk=u'367')>]

In [16]: SearchQuerySet().auto_query('118360')
Out[16]: []

我是否需要为帐号使用不同类型的索引字段?

1 个答案:

答案 0 :(得分:0)

使用NgramField或EdgeNgramField而不是CharField。

http://django-haystack.readthedocs.org/en/latest/autocomplete.html