我将一个包(称为pysolr 2.0.15)下载到我的计算机上,与Haystack一起使用.说明要求我将pysolr添加到我的PYTHONPATH中.
这到底是什么意思呢?在解压缩pysolr文件之后,我运行了命令python setup.py install,这就是它.我做了什么,我还需要做什么?
谢谢您的帮助!
各种助推类型如何在django,django-haystack和solr中协同工作?
我无法将最明显的搜索结果首先显示出来.如果我搜索caring for others并获得10个结果,则带有标题的对象caring for others在结果之后显示为第二个caring for yourself.
我有文件提升Category对象factor = 2.0 - ((the mptt tree level)/10)因此根节点为1.9,第二级为1.8,第三级为1.7,依此类推.(或190%,180%,170%......等等)
boost=1.5150%的正面因素推动了产权提升boost=.550%的负面因素
我目前没有提高任何搜索条件.
我想得到一个结果列表类别和文章(我忽略文章,直到我得到我的类别结果直接).类别加权高于文章,标题加权高于内容.此外,我正在尝试将根类别节点加权高于子节点.
我觉得我在某个地方错过了一个关键概念.
我正在使用haystack的内置搜索表单和搜索视图.
我正在使用以下package/lib版本:
Django==1.4.1
django-haystack==1.2.7
pysolr==2.1.0-beta
Run Code Online (Sandbox Code Playgroud)
我的索引类
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 = …Run Code Online (Sandbox Code Playgroud) 我正在使用django-haystack(v 2.3.1)与solr(v 5.0.0)和pysolr(v 3.0.0).我一直在下面的教程,并建立了类似myapp/search_indexes.py和search/indexes/myapp/mymodel_text.txt文件.
./manage.py build_solr_schema > schema.xml 工作正常,我已将其复制到$ SOLR_HOME/conf/schema.xml.
我尝试时会出现问题./manage.py rebuild_index.首先,我要求确认:
警告:这将从连接"default"中的搜索索引中无可挽回地删除所有内容.
此后您的选择是从备份还原或通过rebuild_index命令重建.
你确定要继续吗?[y/N] y
然后,它失败了:
从您的索引中删除所有文档,因为您这样说.
无法清除Solr索引:[原因:未找到错误404]
已删除所有文档.
索引6个故事
无法向Solr添加文档:[原因:找不到错误404]
我的连接设置是:
#settings.py
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
'URL': 'http://127.0.0.1:8983/solr',
},
}
Run Code Online (Sandbox Code Playgroud)
如果我导航到此网址,我可以看到solr管理页面.我确保端口8983对于solr是开放的(以及Django开发服务器的8000).
我觉得我可能没有提供足够的连接信息,但还有什么可以检查?
更新:
虽然我解决了这个问题,但还有更多问题,所有这些都是通过使用solr(v.4.7.0)来修复的,因为django-haystack还没有为solr 5做好准备(有一个与此相关的问题但是我再也无法在github上找到它.
在这个论坛上全新的,这是我的第一篇文章!在工作中我们正在开始一个使用Apache Solr的项目,我负责前端系统(基于Django).
我们的solr数据库与任何其他数据库引擎无关,也与任何模型类无关,因此Haystack对我们不利(因为它与模型严格相关).
我正在查看http://code.google.com/p/pysolr/和http://code.google.com/p/solrpy/
基本上,它们是相似的.我更喜欢solrpy,因为它使用POST请求,我们可以屏蔽我们的用户查询,但这使得它的分页器更难使用(我猜...).另一方面,由于GET方法,pysolr执行得更好(查询时间更短),但到目前为止,如果没有得到badrequest错误,我无法执行查询.
在选择之前,我想向社群提出任何意见.用户只需要进行搜索,我们的数据由java进程处理,不使用其他数据库(存储用户信息除外),我们需要使用所有solr功能(faceting,highlight,word stop,analyzers ......) .你会选择什么?为什么?你可以指点我的任何好的代码示例?我正在通过干草堆来源看看他们是如何实现所有......
谢谢大家!
我目前在生产中使用 Solr 4.2.0(大约在 2012 年建立)。我已经建立了一个新的开发环境,我升级了所有包(Django 1.8.10、PySolr 3.4.0、Haystack 2.4.1)并设置了 Solr 5.5.0
我运行了 Solr,我的核心/集合是用 'basic_configs' 创建的,它似乎运行良好,除了在索引期间我遇到了很多类似于以下的错误:
All documents removed.
Indexing 9604 contracts
Failed to add documents to Solr: Solr responded with an error (HTTP 400): [Reason: ERROR: [d
oc=accounting.contract.22] unknown field 'status']
Failed to add documents to Solr: Solr responded with an error (HTTP 400): [Reason: ERROR: [d
oc=accounting.contract.70556] unknown field 'date_signed']
Failed to add documents to Solr: Solr responded with an error (HTTP 400): [Reason: ERROR: [d
oc=accounting.contract.72059] unknown field …Run Code Online (Sandbox Code Playgroud) 如何在solr中查询包含solr保留关键字的字段为":"?
例如,
q = 'uri:http://www.example.com'
Run Code Online (Sandbox Code Playgroud)
为包含保留字":"的" http://www.example.com " 引发错误
更新: Pysolr 版本:3.2.0
这似乎是 solr 中的一个错误。在操作中不更新任何内容时,它将删除此文档。
以前我在原子更新中使用 pysolr 时使用了代码,但在以下情况下我犯了错误。
现在文档架构可能是这样的:
doc = {
'id': ...,
'title': ...,
'body': ...,
}
Run Code Online (Sandbox Code Playgroud)
我已经索引了一批文档,现在我想用一个新字段 anchor_text 更新每个文档。这是我的代码:
solr = pysolr.Solr(url_solr)
doc_update = {
'id': ...,
'anchor_text': [a,b,c,...]
}
solr.add([doc_update], fieldUpdates={
'anchor_text': 'set'
})
Run Code Online (Sandbox Code Playgroud)
但我发现一些原始文档仅在留下id字段时被删除。更新后是这样的:
doc = {
'id':...
}
Run Code Online (Sandbox Code Playgroud)
特别是,对于那些其 anchor_text 字段为空列表的人,原始文档被删除。而其他人则不是。(可能我猜是因为我只看到几个案例)。
我查看了源代码,但没有发现任何有价值的内容。这里发生了什么?
在更新文档中使用 pysolr 的正确方法是什么?
Django haystack 是否适用于最新的 Solr 更新(8.5.1)?另外我如何设置我的 Django 博客项目
我正在使用pysolr-2.0.15 api进行SOLR搜索
mysite:8983/solr/select/?q=disease&fq=url:"pediatric"&version=2.2&start=0&rows=10&indent=on
Run Code Online (Sandbox Code Playgroud)
这个SOLR查询给了我成功的结果
我想用pysolr搜索功能来实现它
我正在尝试这个
results = conn.search('disease "url:Pediatric"')
Run Code Online (Sandbox Code Playgroud)
但结果不正确.
另一个问题是搜索方法只返回10条记录我怎样才能获得所有搜索结果.
谁能帮我吗?
(我已经看到了与此类似的问题-但似乎无法解决以下原因为何不起作用!)
嗨,我有一个正在运行的solr本地实例,并进行了以下调用(通过浏览器中的url框):
http://localhost:8983/solr/select?q=video&rows=0&facet=true&facet.field=q_date
Run Code Online (Sandbox Code Playgroud)
并获得以下结果(请参见结果1)。然后,我尝试使用Python / PySolr进行等效处理:
solr = pysolr.Solr('http://localhost:8983/solr/', timeout=10)
params = {
'facet': 'true',
'facet.field': 'q_date',
'rows': '0',
}
results = solr.search('video', **params)
Run Code Online (Sandbox Code Playgroud)
而且似乎没有任何结果(如果我做“ rows”:10,那么我得到10个结果)-但无论哪种情况,我似乎都没有任何方面。
任何想法如何解决这个问题?在弄清楚这一点之后,我也希望使用StatsComponent功能(例如,&stats = true&stats.field = q_visits)
提前致谢
结果1:
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">2</int>
<lst name="params">
<str name="facet">true</str>
<str name="q">video</str>
<str name="facet.field">q_date</str>
<str name="rows">0</str>
</lst>
</lst>
<result name="response" numFound="670" start="0"/>
<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields">
<lst name="q_date">
<int name="2013-03-31T00:00:00Z">135</int>
<int name="2013-01-31T00:00:00Z">121</int>
<int name="2012-10-31T00:00:00Z">113</int>
<int name="2013-02-28T00:00:00Z">112</int>
<int name="2012-11-30T00:00:00Z">107</int>
<int name="2012-12-31T00:00:00Z">82</int>
</lst>
</lst>
<lst name="facet_dates"/> …Run Code Online (Sandbox Code Playgroud)