【发布时间】:2012-04-16 11:53:24
【问题描述】:
我是整个搜索的新手,很难学习 haystack。(solr 作为后端)
这是我对 haystack/solr 的理解。
如果我的理解有误,请评论。
Solr
solr 是文档搜索引擎。 (与 RDBMS 相对)
它允许用户快速搜索给定术语的文档。(可以使用倒排索引)
solr 还允许在文档结构良好的情况下进行构面搜索。(如在 xml 中)
干草堆
对于某些应用程序(例如电子商务网站),将产品数据存储在 RDBMS 中是个好主意。(xml 也可以工作,但我只是猜测 RDBMS 比 xml 更擅长更新)
如果我们将产品数据存储在 RDBMS 中,我们可以编写查询来获取相关数据以供用户查询,但这很麻烦。
Haystack 可以将 RDBMS 中的数据转换为文档,以便 solr 可以对其进行索引。
solr 索引数据后,大部分搜索可以委托给 solr。
问题来了。
我可以根据需要创建数据库模式并仍然使用 haystack/solr 吗?
假设我有如下的数据库模型,我的 search_indexes.py 会是什么样子来启用任何类别的分面搜索?
...
class Category(models.Model):
name = models.CharField(max_length=200)
parentCategory = models.ForeignKey('self', null=True, blank=True)
class Item(models.Model):
name = models.CharField(max_length=200)
categorys = models.ManyToManyField(Category)
details = models.CharField(max_length=1024)
注意,类别可以嵌套(类别可以有父类别)。
【问题讨论】:
-
在代码之前,开始一个带有内容的新段落或
<p></p>以分隔列表和代码;或将代码缩进两次(8 个空格) -
@okm:感谢您的编辑修复!
标签: django solr indexing django-haystack