- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
各种 boosting 类型如何在 django、django-haystack 和 solr 中协同工作?
我无法让最明显的搜索结果首先出现。如果我搜索关心他人
并获得 10 个结果,标题为关心他人
的对象在结果中出现在关心自己
之后的第二个。
我的文档提升了Category
对象的因子为factor = 2.0 - ((mptt树级别)/10)
,因此根节点为1.9,第二级为1.8 ,1.7为第三级,依此类推。 (或 190%、180%、170%...等等)
标题提升了 150% 的 boost=1.5
正因子内容提升了 boost=.5
负因子 50%
我目前没有提升任何搜索词。
我想要获取类别和文章的结果列表(在直接获得类别结果之前,我会忽略文章)。类别的权重高于文章,标题的权重高于内容。另外,我尝试将根类别节点的权重设置为高于子节点的权重。
我觉得我在某个地方遗漏了一个关键概念。
我正在使用 haystack 的内置搜索表单和搜索 View 。
我正在使用以下包/lib 版本:
Django==1.4.1
django-haystack==1.2.7
pysolr==2.1.0-beta
我的索引类
class CategoryIndex(SearchIndex):
"""Categorization -> Category"""
text = CharField(document=True, use_template=True, boost=.5)
title = CharField(model_attr='title', boost=1.5)
content = CharField(model_attr='content', boost=.5)
autocomplete = EdgeNgramField(model_attr='title')
def prepare_title(self, object):
return object.title
def prepare(self, obj):
data = super(CategoryIndex, self).prepare(obj)
base_boost = 2.0
base_boost -= (float(int(obj.level))/10)
data['boost'] = base_boost
return data
我的搜索模板位于 templates/search/categorization/category_text.txt
{{ object.title }}
{{ object.content }}
我注意到,当我从搜索模板中取出 {{ object.content }}
时,记录开始按预期顺序出现。这是为什么?
最佳答案
Dismax 解析器(从 SOLR 3.1 开始还有 ExtendedDismax)正是为了这些需求而创建的。您可以配置要搜索的所有字段(“qf”参数),为每个字段添加自定义增强,并指定短语命中特别有值(value)的字段(添加到命中的分数;“pf”参数)。您还可以指定搜索中必须匹配的标记数量(通过灵活的规则模式;“mm”参数)。
例如配置可能如下所示(solrconfig.xml 中请求处理程序配置条目的一部分 - 我不熟悉如何使用 haystack 做到这一点,这是简单的 SOLR):
<str name="defType">dismax</str>
<str name="q.alt">*:*</str>
<str name="qf">text^0.5 title^1.5 content^0.5</str>
<str name="pf">text title^2 content</str>
<str name="fl">*,score</str>
<str name="mm">100%</str>
<int name="ps">100</int>
我不知道 haystack 但它似乎会提供 Dismax 功能: https://github.com/toastdriven/django-haystack/pull/314
请参阅此 Dismax 文档(它也链接到 ExtendedDismax): http://wiki.apache.org/solr/DisMaxQParserPluginhttp://wiki.apache.org/solr/ExtendedDisMax
关于Django、Haystack、Solr 和 Boosting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12271029/
我正在阅读 Haystack 的“入门”指南,并尝试使用 Haystack 为我的网站实现 Whoosh 后端。我成功设置了整个项目,还可以在我的 search.html 模板上看到搜索框。我无法建立
我正在尝试使用 django haystack 制作自定义搜索表单,我只是从 haystack 的文档中修改: 表格.py from django import forms from haystack
我是 Django 和 Haystack 的新手...我需要知道如何按日期/时间戳对搜索结果进行排序,最近的排在最前面。 这是我的模型.py: class adsText(models.Model):
我在一个应用程序中使用 Haystack,它非常完美。它正在索引我需要的一切。但是,现在我创建了另一个应用程序,具有不同的模型和内容,我想用 Haystack 索引它。我的想法是在我的网站上创建两个不
我想根据返回的不同模型名称(类)对结果进行分面。是否有捷径可寻? 最佳答案 您是否尝试添加 SearchIndex字段与此信息?例如。 class NoteIndex(SearchIndex, ind
我想在我博客的 base.html 模板上使用 django-haystack 的搜索表单,但结果在不同的模板页面上,我该怎么做? 最佳答案 构造表单以将数据提交到正确的 URL,
我使用 Haystack 进行搜索,返回的结果 SearchQuerySet 包含 None 元素: >> SearchQuerySet().models(Question, Document, Id
我在 Django 中使用 Haystack 和 Whoosh 在 search_index.py 我有这个 class PageIndex(RealTimeSearchIndex): tex
我正在使用 Haystack和 Whoosh使用来自 Geonames 的城市数据搜索自定义应用程序项目。 我只导入了少量 Geonames 城市数据(22917 条记录)。我想按城市人口对结果进行排
我将 Django 1.5.1 与 django-haystack 2.1.0 和 whoosh 2.5.2 后端一起使用: 模型.py: GENDER_CHOICES = ( (u'M',
我在生产服务器上安装 django-haystack 时遇到问题。 当我运行以下任何命令时,出现错误No module named haystack: python manage.pysyncdb p
我正在尝试为只搜索单词的一部分(如果我没记错的话,根据 Haystack 文档称为 autocomplete)实现生成结果。 示例: 搜索 "gol" 结果 "goldfish" 我尝试了什么? 我按
我在 Django Haystack 1.2.5 中遇到了一些问题。我需要提升一个领域,但显然它不起作用。我正在使用 Solr 1.4.1。 我的指数: class JobsTextIndex(ind
我有两个模型: 模型.py class model1 (models.Model): field1_model1 = models.CharField() filed2_model1 =
我正在尝试获取 MultiValueField被索引,但它只是不工作。这是我所拥有的: 类 Public_PollIndex(SearchIndex): text = CharField(model_
我已经使用 Django Haystack 一段时间了,它很棒!我有一个相当繁重的网站,其中的数据需要不时更新(15 到 30 分钟)。 使用 python manage.py update_inde
有没有办法制作 django-haystack 的 {% highlight %}模板标签显示传入的完整变量,而不是在第一次匹配之前删除所有内容? 我是这样使用它的: {% highlight thr
在我的领域中,内容是“示例”。我不仅想找到确切的单词“example”,我还想找到“examp”。我怎样才能做到这一点?有没有选择。找不到任何东西。 最佳答案 如果您只想搜索以某个字符串开头的对象,那
我已经使用 Solr 在 Haystack 中正确配置了拼写建议的所有内容,但是,当使用 SearchView 时,suggestion 上下文变量未设置。我意识到这是由于 https://githu
使用elasticsearch(2.x),django-haystack(2.8.0),drf-haystack(1.8.6)我建立了搜索。一切工作正常,除了我不能同时搜索多个字段。现在,我只能搜索(
我是一名优秀的程序员,十分优秀!