python - Haystack Whoosh 没有索引所有内容

标签 python django django-haystack whoosh


我正在使用 Haystack v1.0 和 Whoosh v1.8.1 为我的网站构建自定义搜索引擎。一切都很好,但问题是我的索引模型中的很多条目都没有结果。

例如- 我有四个注册模型 - 成员(member)、嘉宾、事件、赞助商。从 django shell 重建索引时,会发生以下情况:

./manage.py 重建索引

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

但是在运行 SearchQuery API 命令以及通过搜索页面进行搜索时,我无法搜索到一半的成员名称。令我困惑的是,当我可以搜索 14-15 个成员时,为什么不能搜索其余的成员。我的模板 *_text.txt* 文件应该是正确的,因为一半的成员已正确编入索引。

你可以试试这个
http://www.edciitr.com/search/?q=x
x= Vikesh 返回 1 个结果(如预期)
x= Akshit 没有返回任何结果(问题!)

“Akshit”和“Vikesh”这两个值在 rebuild_index 之前都存在。这是我要搜索的所有 26 个成员的列表 - http://www.edciitr.com/contact/

最佳答案

好的,下面是我为查明问题出在 Whoosh 还是 Haystack 中所做的工作。我打开了 django shell 并搜索了 haystack SearchQuery API 搜索中没有出现的词:

./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
 $>> []

因此,我意识到我必须检查 haystack 库的 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 按预期为测试查询返回一个结果。网络搜索有效,但我想知道 haystack 这里有什么问题。

关于python - Haystack Whoosh 没有索引所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5543050/

相关文章:

python - 从 defaultdict 获取原始 key 集

python - django-haystack 空间搜索要求?

javascript - 创建决策 TreeMap

python - Pyusb 找不到设备,而 libusb 可以

python - 按 union 的 SQLAlchemy 查询中的标记列过滤

javascript - 用户从下拉列表中选择选项后如何更改 url 值

python - Django 科学记数法输入验证

python django 关闭 excel 服务器

python - Django Haystack搜索html标签会返回所有帖子

django - Django-haystack 使用 Solr 索引列表而不是原始数据