Haystack和Solr搜索术语包含“ - ”

时间:2015-10-10 14:40:12

标签: python solr django-haystack

在搜索包含字符' - '的字词时,我没有得到任何结果。例如:

我搜索术语“电子商店”,stored_fields是: {'url':你'http://www.e-shop.com/','文字':你的商店\ n技术\ n','名称':你的商店'}

search_index.py是:

class ShopIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.EdgeNgramField(document=True, use_template=True)
    name = indexes.CharField(model_attr='name')
    url = indexes.CharField(model_attr='url')

我正在使用Solr。

你知道我是否必须以某种方式逃避这个角色,我是否需要以不同的方式存储或者我是否做错了什么?

1 个答案:

答案 0 :(得分:0)

http://ftp.ps.pl/pub/apache/lucene/solr/ref-guide/apache-solr-ref-guide-6.1.pdf

您需要检查edge_ngram中的schema.xml字段声明,我假设默认情况下,haystack EdgeNgramField在其架构声明中具有过滤器,该声明逐字拆分并{{1因此,当字段值为例如-时,solr构建令牌,如e-shopes等等。 还有一件事:https://github.com/django-haystack/django-haystack/blob/master/haystack/templates/search_configuration/solr.xml#L120

默认情况下,haystack有sh所以在这种情况下无法按单个字符进行搜索。要按单个字符搜索,请将其值更改为minGramSize="2"