小编tuf*_*fla的帖子

Django haystack EdgeNgramField给出了与弹性搜索不同的结果

我目前正在运行带有弹性搜索后端的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)

python django django-haystack elasticsearch

13
推荐指数
2
解决办法
3973
查看次数

{%trans"string"as my_translated_string%}未在模板中呈现内容

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 translation django-templates internationalization

5
推荐指数
1
解决办法
2243
查看次数

Django只加载一次对象实例,让它们可用于启动app

我有一个应用程序(Django 1.6),它使用大约4000个对象,用于以前生成的自然语言处理(NLP).

所有应用程序进程(请求,测试,自定义管理命令等)都需要以某种方式使用所有这些对象.

我想做的是在启动时(或左右)加载所有这些对象,并将它们存储在内存中,以使它们可用于所有应用程序进程.

这篇文章有一些线索,但我很想听听你对这种情况的最佳方法的看法.

澄清:4000个对象仅用于在所有进程中读取,它们不会以任何方式被修改到​​应用程序中.

非常感谢.

python django

5
推荐指数
1
解决办法
545
查看次数

在Python中排序多级字典

我需要按“ 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)

我还没有找到一种好的方法。任何建议表示赞赏。

谢谢。

python sorting dictionary

3
推荐指数
1
解决办法
1353
查看次数

如何为模型获取新的 mongoid 索引

假设我已经用几个索引定义了我的模型 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”字段的定义

换句话说...如何获取那些尚未创建的索引?

ruby mongodb mongoid

2
推荐指数
1
解决办法
3167
查看次数