【发布时间】:2015-02-01 21:54:50
【问题描述】:
我有一些产品要编入索引,例如“99% 巧克力”。如果我搜索巧克力,它匹配这个特定的项目,但如果我搜索“99”,它不匹配。我遇到了这个Using django haystack autocomplete with elasticsearch to search for digits/numbers?,它有同样的问题,但没有人回答他的问题。有人可以帮忙吗?
Edit2:很抱歉我忽略了一个重要的细节。数字搜索本身有效,但自动完成功能无效。我包括相关行:
#the relevant line in my index
name_auto = indexes.EdgeNgramField(model_attr='name')
#the relevant line in my view
prodSqs = SearchQuerySet().models(Product).autocomplete(name_auto=request.GET.get('q', ''))
编辑:以下是运行分析器的结果:
curl -XGET 'localhost:9200/haystack/_analyze?analyzer=standard&pretty' -d '99% chocolate'
{
"tokens" : [ {
"token" : "99",
"start_offset" : 0,
"end_offset" : 2,
"type" : "<NUM>",
"position" : 1
}, {
"token" : "chocolate",
"start_offset" : 4,
"end_offset" : 13,
"type" : "<ALPHANUM>",
"position" : 2
} ]
}
【问题讨论】:
-
您在字段中使用什么分析器?您可以看到 elasticsearch 如何使用分析标记所有内容。 elasticsearch.org/guide/en/elasticsearch/reference/current/…
-
@AlainCollins 抱歉,我已更新问题以反映正常搜索工作正常的事实。但是,自动完成与数字不匹配。
标签: elasticsearch django-haystack