【问题标题】:Django haystack indexing many to many field but search failing if there are more than one wordDjango haystack索引多对多字段但如果有多个单词则搜索失败
【发布时间】:2015-12-03 05:21:12
【问题描述】:

我已关注此链接-->Django Haystack and Taggit 并已使用 haystack 和 whoosh 作为搜索引擎对字段进行了索引。如果多对多字段具有多个单词作为属性值,则搜索失败。索引完成为 -->

>>> results[7]
<Hit {'isbn_13': u'9780750661751', u'django_id': u'39858',
'text':u'Reinventing\n9780750661751\n\nJohn Worthington\n\n\n\n\n',
'authors': u'John Worthington', u'django_ct': u'books.book',
'content_auto': u'Reinventing', u'id': u'books.book.39858'}>

对于此索引,搜索 John Worthington 时搜索失败。 authorsMultivalueField 并且搜索失败,因为它有 2 个单词。 但是当MultivalueField中有一个词并且索引是like->

results[0]
<Hit {'isbn_13': u'9.78147E+12', u'django_id': u'39851',
'text': u'Analytic\n9.78147E+12\n\nChau\n\n\n\n\n',
'authors': u'Chau', u'django_ct': u'books.book',
'content_auto': u'Analytic', u'id': u'books.book.39851'}>

对于搜索Chau 的上述索引,搜索工作正常。 谁能帮帮我。

【问题讨论】:

  • 你为什么不使用 CharField 代替?
  • 我试过但没用
  • 你是如何进行搜索查询的
  • books = SearchQuerySet().autocomplete(content=query)
  • 不要使用autocomplete搜索,而是使用filter:books = searchQuerySet().filter(content=haystack.inputs.AutoQuery(query))

标签: python django elasticsearch django-haystack whoosh


【解决方案1】:

您使用autocomplete 进行查找,该autocomplete 设计用于自动完成,而您应该使用filter

  books = searchQuerySet().filter(content=haystack.inputs.AutoQuery(query))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2015-04-28
    相关资源
    最近更新 更多