我目前正在运行带有弹性搜索后端的haystack,现在我正在为城市名称构建自动完成功能.问题是SearchQuerySet给了我不同的结果,从我的角度来看是错误的,而不是直接在elasticsearch中执行的相同查询,这对我来说是预期的结果.
我正在使用:Django 1.5.4,django-haystack 2.1.0,pyelasticsearch 0.6.1,elasticsearch 0.90.3
使用以下示例数据:
使用其中之一
SearchQuerySet().models(Geoname).filter(name_auto='mid')
or
SearchQuerySet().models(Geoname).autocomplete(name_auto='mid')
Run Code Online (Sandbox Code Playgroud)
结果总是返回所有6个名称,包括Min*和Mia*...但是,查询elasticsearch会直接返回正确的数据:
"query": {
"filtered" : {
"query" : {
"match_all": {}
},
"filter" : {
"term": {"name_auto": "mid"}
}
}
}
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 1,
"hits": [
{
"_index": "haystack",
"_type": "modelresult",
"_id": "csi.geoname.4075977",
"_score": 1,
"_source": {
"name_auto": "Midfield",
}
},
{
"_index": "haystack",
"_type": "modelresult", …Run Code Online (Sandbox Code Playgroud) Django 1.4 doc说您可以将翻译后的字符串转换为"vars"以在不同的地方使用,或者使用以下语法在模板标签或过滤器中用作参数:
{% trans "String" as my_translated_string %}
<h1>{{ my_translated_string }}</h1>
Run Code Online (Sandbox Code Playgroud)
https://docs.djangoproject.com/en/1.4/topics/i18n/translation/#trans-template-tag
我这样做,但定义的var永远不会呈现内容.在我的模板代码下面:
{% extends "default_layout.html" %}
{% load i18n %}
{% trans "My page title" as title %}
{% block meta_title %}{{ title }}{% endblock %}
{% block content %}
<h1>{{ title }}</h1>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
当然,在两种情况下,"标题"都呈现为空.
我错过了什么吗?
谢谢.
我有一个应用程序(Django 1.6),它使用大约4000个对象,用于以前生成的自然语言处理(NLP).
所有应用程序进程(请求,测试,自定义管理命令等)都需要以某种方式使用所有这些对象.
我想做的是在启动时(或左右)加载所有这些对象,并将它们存储在内存中,以使它们可用于所有应用程序进程.
这篇文章有一些线索,但我很想听听你对这种情况的最佳方法的看法.
澄清:4000个对象仅用于在所有进程中读取,它们不会以任何方式被修改到应用程序中.
非常感谢.
我需要按“ sales_min”键的值对以下字典进行排序:
mydict = {
'NATION': {'sales_max': 1000, 'sales_min': 500, ...},
'LOCAL': {'sales_max': 250, 'sales_min': 0, ...},
'REGION': {'sales_max': 500, 'sales_min': 250, ...},
...
}
Run Code Online (Sandbox Code Playgroud)
我还没有找到一种好的方法。任何建议表示赞赏。
谢谢。
假设我已经用几个索引定义了我的模型 Person:
class Person
include Mongoid::Document
field :email
field :ssn
index({ email: 1 }, { unique: true })
index({ ssn: 1 }, { unique: true })
end
Run Code Online (Sandbox Code Playgroud)
但是,只有电子邮件索引已经存在于数据库中,所以当我调用
Person.collection.indexes.each {|i| puts i.inspect}
Run Code Online (Sandbox Code Playgroud)
我收到以下回复:
{"v"=>1, "key"=>{"_id"=>1}, "name"=>"_id_", "ns"=>"x.person"}
{"v"=>1, "unique"=>true, "key"=>{"email"=>1}, "name"=>"email_1", "ns"=>"x.person"}
Run Code Online (Sandbox Code Playgroud)
问题是,即使它们尚未在 mongo 中创建,我如何获取模型中已定义索引的列表?
就我而言,此类列表应包括“ssn”字段的定义
换句话说...如何获取那些尚未创建的索引?