在搜索包含字符' - '的字词时,我没有得到任何结果。例如:
我搜索术语“电子商店”,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。
你知道我是否必须以某种方式逃避这个角色,我是否需要以不同的方式存储或者我是否做错了什么?
答案 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-shop
,e
,s
等等。
还有一件事:https://github.com/django-haystack/django-haystack/blob/master/haystack/templates/search_configuration/solr.xml#L120
默认情况下,haystack有sh
所以在这种情况下无法按单个字符进行搜索。要按单个字符搜索,请将其值更改为minGramSize="2"