Стог сена Whoosh не индексирует все - PullRequest
4 голосов
/ 04 апреля 2011


Я использую Haystack v1.0 и Whoosh v1.8.1 для создания настраиваемой поисковой системы для моего сайта.Все работает прекрасно, но проблема в том, что я не получаю результатов для большого количества записей в моих индексированных моделях.

Например, у меня есть четыре зарегистрированные модели - участник, гость, событие, спонсор.При перестройке индекса из оболочки django происходит следующее:

. / Manage.py rebuild_index

Indexing 26 members.  
Indexing 3 events.
Indexing <x> guests.  
Indexing <y> sponsors.  

Но при выполнении команд API SearchQuery, а также при поиске на странице поиска, я не могу выполнить поискполовина имен членов.Что ускользает от меня, так это то, что когда я могу искать 14-15 участников, почему бы не остальные.Мой файл шаблона * _text.txt * должен быть корректным, поскольку половина членов правильно проиндексирована.

Вы можете попробовать это
http://www.edciitr.com/search/?q=x
x = Викеш возвращает 1результат (как и ожидалось)
x = Akshit не возвращает результатов (проблема!)

Оба значения 'Akshit' и 'Vikesh' присутствовали до rebuild_index.Вот список всех 26 участников, которые я пытаюсь найти - http://www.edciitr.com/contact/

Ответы [ 2 ]

3 голосов
/ 05 апреля 2011

Ладно, вот что я сделал, чтобы выяснить, в чем проблема - свист или стог сена. Я открыл оболочку django и выполнил поиск по термину, который не отображался в поиске haystack API SearchQuery:

./manage.py shell   
$>> import whoosh 
$>> from whoosh.query import *  
$>> from whoosh.index import open_dir
$>> ix = open_dir('/home/somedir/my_project/haystack/whoosh/')  
$>> ix.schema  
<Schema: ['branch', 'category', 'coordinator', 'date_event', 'designation','details', 'django_ct', 'django_id'> 'name', 'organisation', 'overview','text', 'title']>
$>> searcher = ix.searcher()  
$>> res = searcher.search(Term('text',u'akshit'))  
$>> print res  
<Top 1 Results for Term('text', 'akshit') runtime=0.000741004943848>
$>> print res['0']['name']  
u'Akshit Khurana'   

Итак, вы видите, Whoosh правильно индексирует все данные. Итак, теперь я пробую SearchQuery API

./manage.py shell
 $>> from haystack.query import SearchQuerySet
 $>> sqs = SearchQuerySet().filter(content='akshit')
 $>> sqs
 $>> []

Итак, я понимаю, что должен проверить файл whoosh_backend.py библиотеки стога сена, чтобы увидеть, что происходит. Открыто - haystack.backends.whoosh_backend around line number 345

'''Uncomment these two lines because the raw_results set becomes empty after the filter     call for some queries''  
if narrowed_results:
      raw_results.filter(narrowed_results)

до

#if narrowed_results:
      #raw_results.filter(narrowed_results)

И тогда это работает. SearchQueryAPI возвращает точно один результат для тестового запроса, как и ожидалось. Веб-поиск работает, но я хотел бы знать, в чем проблема с стогом сена здесь.

0 голосов
/ 13 августа 2013

У меня похожий симптом, и этот вопрос я задал Django django-haystack не может импортировать CategoryBase из django-категорий при первом запуске

Может относиться и к вашей проблеме.

...