我在Solr中有一个字段,其中包含注册号,通常遵循以下格式:
"prop_33": "1923,1110.112"
句点后面的位数是可变的,但这实际上不是浮点,句点不代表小数点。在
编辑:“prop_33”的Solr字段类型是TextField
我使用Haystack来查询Solr,当我调用SearchResult.get_additional_fields()
并从结果字典中获得reg number时,它将其视为int和float的元组。如果我调用str()
来转换它,它将取整它认为是第二个数字的值并产生一些无意义的东西,例如:
因为这实际上不是一个数字,这对我的用户来说毫无意义。我如何从SearchResult
中获得精确的字符串,而不将其转换为int列表?在
我还在学习干草堆和Django,所以我对这一切都有点陌生。在
编辑:这里是我查询Solr的地方:
_结果_对象.html-模板
<div id="collapsemed{{ obj.id }}" class="panel-collapse collapse">
<table class="table table-striped">
{% get_result_details result.get_additional_fields %}
</table>
</div>
基地_标签.py-模板标记
@register.simple_tag
def get_result_details(fields):
rowhtml = ''
for field, value in fields.items():
if field.startswith('prop_'):
prop_num = field[5:]
try:
prop = DescriptiveProperty.objects.get(id=prop_num)
try:
row = '<tr><td>' + prop.property + '</td><td>' + value + '</td></tr>'
except TypeError:
row = '<tr><td>' + prop.property + '</td><td>' + str(value) + '</td></tr>'
rowhtml += row
except DescriptiveProperty.DoesNotExist:
pass
return rowhtml
更新:当Haystack从索引返回一个SearchQuerySet
时,问题似乎就发生了。索引中的注册号是正确的,但是当我从控制台执行以下操作时:
>>> from haystack.query import SearchQuerySet
>>> s = SearchQuerySet().filter(prop_31 = 116565)
>>> s.values('prop_33')
[{'prop_33': (1923, 1110.1659999999999)}]
现在它变成了元组。有没有办法告诉Haystack把索引中的所有值都当作字符串处理???在
更进一步的更新:我尝试在架构.xml从“文本”到“字符串”没有什么区别。在
旧的架构.XML公司名称:
<dynamicField name="prop_*" type="text_en" indexed="true" stored="true"/>
新的架构.XML公司名称:
<dynamicField name="prop_*" type="string" indexed="true" stored="true"/>
在网页上和控制台上打印的结果相同。在
目前没有回答
相关问题 更多 >
编程相关推荐