我有一个产品索引,关键字为多值字段
class ProductIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
keywords = indexes.MultiValueField(faceted=True)
def prepare_keywords(self, product):
return [p.name for p in product.tags.all()]
我需要找到关键字与lightning
完全相同的产品。我使用这个查询 -
SearchQuerySet().models(Product).filter(keywords__exact=u'Lighting')
但是这也给了我lightning
作为这个词的一部分的产品。喜欢
print SearchQuerySet().models(Product).filter(keywords__exact=u'Lighting')[1].keywords
[u'LED lighting', u'Optic Lighting']
这样做的正确方法是什么?
答案 0 :(得分:0)
只看example/solr/collection1/conf/schema.conf
<field name="keywords" type="text_en" indexed="true" stored="true" multiValued="true" />
我认为确切只对字符串字段起作用而不是文本字段。您必须编辑此配置并创建关键字字段,如下所示:
<field name="keywords" type="string" indexed="true" stored="true" multiValued="true" />