Django haystack 索引多对多字段但如果有多个单词则搜索失败
Django haystack indexing many to many field but search failing if there are more than one word
我遵循了这个 link-->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
时搜索失败。 authors
是 MultivalueField
并且搜索失败,因为它有 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
,搜索工作正常。
有人可以帮帮我吗
您使用 autocomplete
进行查找,它专为自动完成而设计,而您应该使用 filter
:
books = searchQuerySet().filter(content=haystack.inputs.AutoQuery(query))
我遵循了这个 link-->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
时搜索失败。 authors
是 MultivalueField
并且搜索失败,因为它有 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
,搜索工作正常。
有人可以帮帮我吗
您使用 autocomplete
进行查找,它专为自动完成而设计,而您应该使用 filter
:
books = searchQuerySet().filter(content=haystack.inputs.AutoQuery(query))