在Django中使用HayStack + Solr进行高级搜索?

时间:2013-08-11 04:17:20

标签: python django search solr django-haystack

我尝试了Haystack网站http://django-haystack.readthedocs.org/en/latest/tutorial.html提供的基本教程,并且它在基本搜索中工作正常。 但是它的搜索无效,因为假设我的Note模块有text字段的3个条目。

  1. Twitter Bootstrap设计师需要设计/编辑网站主题
  2. 在Ubuntu上使用mod_wsgi,virtualenv的Django(python)应用程序
  3. Python考试将在拉贾斯坦邦举行。
  4. 当我搜索

    python结果: 2& 3 文字字段。

    python exam结果:第三个文字字段

    但是在搜索python flask时,它什么都没有。我想再次获得第二和第三结果,因为有python个关键字。

    搜索时boot没有结果,但应显示第一个结果,引导字中有boot

    再次搜索pyton时没有结果,但它应显示第二和第三结果,因为 python 中只缺少一个char h

    再次搜索bootstrap django时没有结果,但应显示第一个和第二个结果。

    所以,看起来我错过了干草堆的一些高级设置。

    如何使搜索更有效,以便获得更好的结果,而不仅仅是直接匹配?

1 个答案:

答案 0 :(得分:6)

我已回复您的各种问题作为内联回复。

  

但是当搜索python flask时它什么都没有。我想要第二和   第三个结果,因为有python关键字。

您想要将haystack运算符从AND更改为OR。有关详细信息,请参阅http://django-haystack.readthedocs.org/en/v2.1.0/settings.html#haystack-default-operator

  

当搜索引导没有结果,但它应该显示第一个结果,它有   用bootstrap word启动。

查看NgramFieldEdgeNgramField进行部分匹配。

  

当搜索pyton时再没有结果,但它应该显示第2和第3   结果,因为python中只缺少1个字符。

查看haystack的拼写建议:http://django-haystack.readthedocs.org/en/latest/searchqueryset_api.html#spelling-suggestion

  

当搜索bootstrap django时再没有结果,但它应该显示1st   和第二个结果。

这是由haystack运营商配置的。


Haystack 2.0+的示例配置,默认运算符设置为ORINCLUDE_SPELLING=True

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
        'URL': 'http://localhost:9001/solr/default',
        'INCLUDE_SPELLING': True,
    },
}
HAYSTACK_DEFAULT_OPERATOR = 'OR'