我的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]: []
我是否需要为帐号使用不同类型的索引字段?
答案 0 :(得分:0)
使用NgramField或EdgeNgramField而不是CharField。
http://django-haystack.readthedocs.org/en/latest/autocomplete.html