Искать в нескольких моделях в стоге сена - PullRequest
0 голосов
/ 25 октября 2018

У меня есть несколько моделей, для которых мы уже создали поисковые индексы.Теперь у меня есть страница, на которой я хочу искать только в двух моделях Haystack: Manuscript и Page.Я не очень понимаю документацию из Хейстек.На данный момент запрос все еще выполняется по всем моделям, которые были проиндексированы.Как мне настроить views.py и index.py для него?Оценка заранее.

индексы поиска для Рукописи и Страницы:

class PageIndex(indexes.SearchIndex, indexes.Indexable):
  text = indexes.CharField(document=True, use_template=True)
  uniqueID = indexes.CharField(model_attr='id_tei')
  manuscript = indexes.CharField(model_attr='Manuscript_id', null=True, faceted=True)  #this isn't in the database...??
  fulltext = indexes.CharField(model_attr='fulltext')
  modeltype = indexes.CharField(model_attr='get_type', null=True)

  def get_model(self):
    return Page

  def get_type(self):
    return 'Page'

class ManuscriptIndex(indexes.SearchIndex, indexes.Indexable):
  text = indexes.CharField(document=True, use_template=True)
  uniqueID = indexes.CharField(model_attr='id_tei')
  title = indexes.CharField(model_attr='title', null=True)
  person_id = indexes.CharField(model_attr='person_id', null=True, faceted=True)
  date = indexes.CharField(model_attr='date', null=True, faceted=True)
  type_of_Manuscript = indexes.CharField(model_attr='type_of_Manuscript', null=True, faceted=True)
  call_no = indexes.CharField(model_attr='call_no', null=True)
  modeltype = indexes.CharField(model_attr='get_type', null=True)

  def get_model(self):
    return Manuscript

  def get_type(self):
    return 'Manuscript'

views.py для страницы поиска:

def search(request):
  if search:
      clean_query = SearchQuerySet().query.clean(user_query)
      sqs = SearchQuerySet().models(Page, Manuscript).filter(SQ(content=clean_query))
  return render(request, 'search/search.html')

urls.py:

urlpatterns = [
     ...
     path('search/',include('haystack.urls')),
     ...
 ]
...