Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python在textfield中突出显示searchValue_Python_Django_Postgresql - Fatal编程技术网

Python在textfield中突出显示searchValue

Python在textfield中突出显示searchValue,python,django,postgresql,Python,Django,Postgresql,我在跟踪,关于django搜索 search_value = request.query_params['searchvalue'] documents = Document.objects.filter( raw_text__icontains=search_value ).values_list('doc_id', flat=True) return documents 这将根据搜索值获取文档id的列表。但在某些文档对象中,原始文本文本字段多次包含搜索值。但我还是只拿到一次医生

我在跟踪,关于django搜索

search_value = request.query_params['searchvalue']

documents = Document.objects.filter(
    raw_text__icontains=search_value
).values_list('doc_id', flat=True)

return documents
这将根据搜索值获取文档id的列表。但在某些文档对象中,原始文本文本字段多次包含搜索值。但我还是只拿到一次医生证


有没有办法为过滤器中的每次点击获取文档id

我没有成功地使用筛选器解决此问题。所以我在谷歌上寻找突出显示的结果,并找到了

此搜索将遍历文本字段并返回此文本的片段。并突出显示搜索值

我的最终代码如下所示:

    search_value = request.query_params['searchvalue']

    queryset = Document.objects.extra(
        select={
            'snippet': (
                "ts_headline(raw_text, plainto_tsquery(%s), "
                "'StartSel=*,StopSel=*,MaxFragments=2,"
                "FragmentDelimiter=...,MaxWords=8,MinWords=1')"
            ),
        },
        where=["search @@ plainto_tsquery(%s)"],
        params=[search_value],
        select_params=[search_value, search_value]
    )

    return Response(queryset.values('id', 'title', 'snippet', 'doc_number'))

我希望这将帮助其他人:)

我没有成功地使用筛选器解决此问题。所以我在谷歌上寻找突出显示的结果,并找到了

此搜索将遍历文本字段并返回此文本的片段。并突出显示搜索值

我的最终代码如下所示:

    search_value = request.query_params['searchvalue']

    queryset = Document.objects.extra(
        select={
            'snippet': (
                "ts_headline(raw_text, plainto_tsquery(%s), "
                "'StartSel=*,StopSel=*,MaxFragments=2,"
                "FragmentDelimiter=...,MaxWords=8,MinWords=1')"
            ),
        },
        where=["search @@ plainto_tsquery(%s)"],
        params=[search_value],
        select_params=[search_value, search_value]
    )

    return Response(queryset.values('id', 'title', 'snippet', 'doc_number'))

我希望这能帮助其他人:)

我能问一下你为什么要这么做吗?您可能可以按匹配的数量进行排序..我尝试过,但如果您想在文档中显示搜索值的“点击数”之后对结果进行排序,则会使用秩。因此,它仍然只返回一个文档id,即使该文档有两次或更多次search_值。我认为循环“可能”是一个很好的解决方案。我能问问你为什么要这样做吗?您可能可以按匹配的数量进行排序..我尝试过,但如果您想在文档中显示搜索值的“点击数”之后对结果进行排序,则会使用秩。因此,它仍然只返回一个文档id,即使该文档有两次或更多次search_值。我认为循环“可能”是一个很好的解决方案。