我刚刚安装了solr的haystack并创建了一个自定义视图:
from haystack.query import SearchQuerySet
def post_search(request, template_name='search/search.html'):
getdata = request.GET.copy()
try:
results = SearchQuerySet().filter(title=getdata['search'])[:10]
except:
results = None
return render_to_response(template_name, locals(), context_instance=RequestContext(request))
此视图仅返回标题字段上的完全匹配。我怎么做至少像sql LIKE'%string%'(或者至少我认为是这样的)这样的地方如果我搜索'i'或'IN'或'index'我会得到结果'index'?< / p>
您使用haystack或solr编辑的大多数搜索方式也是?
您建议了哪些其他良好做法/搜索改进(请同时提供实施)?
提前感谢一大堆!
答案 0 :(得分:1)
当您使用Haystack / Solr时,我们的想法是您必须告诉Haystack / Solr您想要为特定对象编制索引。所以说你想在为基本字典键入索引时构建一个find。如果您希望它只匹配前缀,对于单词Boston
,您需要告诉它索引B
,Bo
,Bos
等等,然后您无论当前搜索表达式是什么,都会发出查询,您可以返回结果。如果你想搜索单词的任何部分,你需要构建后缀树,然后Solr会负责索引它们。
查看Haystack中的模板以获取更多信息。 http://docs.haystacksearch.org/dev/best_practices.html#well-constructed-templates
你提出的问题是相当通用的,它可能有助于详细说明人们在搜索什么。然后,建议如何索引数据会更容易。祝你好运。