【问题标题】:How to display the search result score as percentage in the frontend?如何在前端将搜索结果分数显示为百分比?
【发布时间】:2019-09-23 11:59:03
【问题描述】:

我最近在我的 Django 项目中使用 Django-haystack 设置了 Elasticsearch,我想在我的模板 (html) 中以百分比形式显示搜索结果的分数。

所以我想知道是否有办法实现这一点?

最终结果的一个简单示例如下:

<div>
{% if  page_obj.object_list %}
       <ol class="row top20">

        {% for result in page_obj.object_list %}

        <div class="showcase col-sm-6 col-md-4">


<!-- Matching score to be displayed in the h5 below -->

          <h5>{{result.object.matching_score}}</h5>

        <a href="{{ result.object.get_absolute_url }}">
          <h3>{{result.object.title}}</h3>
          <img src="{{ result.object.image }}" class="img-responsive">
        </a>

        </div>

         {% endfor %}
       </ol>
{% endif %}
</div>

我对此仍然很陌生,但可能是 If - Else 语句、Elasticsearch 默认的 _score 值,甚至一些 Javascript 都可以完成这项工作。我不确定,所以你认为我应该怎么做?

【问题讨论】:

    标签: python django elasticsearch django-haystack


    【解决方案1】:

    如果matching_scroe 是您想要以百分比形式显示的内容,您可以使用{{result.object.matching_score|floatformat:2}}% 来实现

    如果你有 2 个值需要分割,你需要写一个模板标签

    在目录templatetagsmytags.py

    from django import template
    register = template.Library()
    
    
    @register.filter
    def div(numerator, denominator):
        return float(numerator/denominator)
    

    在您的 html 文件中

    {% load mytags %}
    
    {{ object.numerator|div:object.denominator }}%
    

    【讨论】:

    • 感谢您的快速回答!您的回答肯定会有所帮助,但首先我需要了解如何实际给搜索结果打分,然后将其显示出来。关于如何做到这一点的任何想法?
    • 我知道 Elasticsearch 提供了一个默认的 _score 值,如下所示:imgur.com/MkwKfpC(以我的索引截图并突出显示 _score 值为例)。所以也许我可以在我的 Django 项目中编写一个自定义 python 代码来检索这个 _score 值并将其更改为百分比,最后在我的 html 中调用它?
    • 听起来是个明智的做法
    • 是的,我知道,我们的目标是实现这样的目标:imgur.com/uYNsZtr
    • 我该怎么办?
    猜你喜欢
    • 2022-07-06
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多