You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用xapian后端的django-haystack浮点索引转换异常求助

xapian_haystack (3.0.1) 范围过滤转换异常

异常信息

Traceback (most recent call last):
  File "/home/pooh/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/home/pooh/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/pooh/venv/lib/python3.10/site-packages/haystack/views.py", line 161, in search_view
    return view_class(*args, **kwargs)(request)
  File "/home/pooh/venv/lib/python3.10/site-packages/oscar/apps/search/views.py", line 25, in __call__
    response = super().__call__(request)
  File "/home/pooh/venv/lib/python3.10/site-packages/haystack/views.py", line 52, in __call__
    self.results = self.get_results()
  File "/home/pooh/venv/lib/python3.10/site-packages/oscar/apps/search/views.py", line 68, in get_results
    return super().get_results().models(Product)
  File "/home/pooh/venv/lib/python3.10/site-packages/haystack/views.py", line 90, in get_results
    return self.form.search()
  File "/home/pooh/metagrocery/oscar_forks/search/forms.py", line 61, in search
    vals_range=get_vals(sqs_range)
  File "/home/pooh/metagrocery/oscar_forks/search/forms.py", line 45, in get_vals
    for _1 in sorted(filter(None, (_.sugar for _ in s)))
  File "/home/pooh/metagrocery/oscar_forks/search/forms.py", line 45, in <genexpr>
    for _1 in sorted(filter(None, (_.sugar for _ in s)))
  File "/home/pooh/venv/lib/python3.10/site-packages/haystack/query.py", line 150, in _manual_iter
    if not self._fill_cache(
  File "/home/pooh/venv/lib/python3.10/site-packages/haystack/query.py", line 231, in _fill_cache
    results = self.query.get_results(**kwargs)
  File "/home/pooh/venv/lib/python3.10/site-packages/haystack/backends/__init__.py", line 677, in get_results
    self.run(**kwargs)
  File "/home/pooh/venv/lib/python3.10/site-packages/haystack/backends/__init__.py", line 587, in run
    final_query = self.build_query()
  File "/home/pooh/venv/lib/python3.10/site-packages/xapian_backend.py", line 1261, in build_query
    query = self._query_from_search_node(self.query_filter)
  File "/home/pooh/venv/lib/python3.10/site-packages/xapian_backend.py", line 1302, in _query_from_search_node
    constructed_query_list = self._query_from_term(term, field_name, filter_type, is_not)
  File "/home/pooh/venv/lib/python3.10/site-packages/xapian_backend.py", line 1388, in _query_from_term
    query_list.append(self._filter_range(term, field_name, field_type, is_not))
  File "/home/pooh/venv/lib/python3.10/site-packages/xapian_backend.py", line 1581, in _filter_range
    pos, begin, end = vrp('%s:%s' % (field_name, _term_to_xapian_value(term[0], field_type)),
  File "/home/pooh/venv/lib/python3.10/site-packages/xapian_backend.py", line 148, in __call__
    begin = _term_to_xapian_value(float(begin), field_type)
ValueError: could not convert string to float: "b'\xb1'"

问题分析

在_filter_range及其相关方法中,代码先将值转换为float,用于组装成field_name:term格式传入范围过滤器,但过滤器内部再次执行转换时触发了ValueError,无法将字符串"b'\xb1'"转为浮点数。目前尚未完全理清此处逻辑,但重复转换是引发异常的直接诱因。


内容的提问来源于stack exchange,提问作者aikipooh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:53:10