Asp如何将搜索结果中的关键字用高亮显示?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Asp如何将搜索结果中的关键字用高亮显示?相关的知识,希望对你有一定的参考价值。

本人不太懂编程,请教如何将ASP+ACCESS的搜索网站的各搜索结果中的关键字高亮显示。网页的编码如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include virtual="/ChtermWeb/Connections/IPSAS.asp" -->
<%
Dim rsIPSAS__MMColParam
rsIPSAS__MMColParam = "1"
If (Request.QueryString("ipsas") <> "") Then
rsIPSAS__MMColParam = Request.QueryString("ipsas")
End If
%>
<%
Dim rsIPSAS
Dim rsIPSAS_cmd
Dim rsIPSAS_numRows

Set rsIPSAS_cmd = Server.CreateObject ("ADODB.Command")
rsIPSAS_cmd.ActiveConnection = MM_IPSAS_STRING
rsIPSAS_cmd.CommandText = "SELECT * FROM IPSAS WHERE English LIKE ?"
rsIPSAS_cmd.Prepared = true
rsIPSAS_cmd.Parameters.Append rsIPSAS_cmd.CreateParameter("param1", 200, 1, 255, "%" + rsIPSAS__MMColParam + "%") '

。。。
<table id="IPSASTable" border="1" frame="box" class="yui-grid">
<thead>
<tr>
<th width="50%">英文</th>
<th width="50%">译文</th>
</tr>
</thead>
<tbody>
<%
While ((Repeat1__numRows <> 0) AND (NOT rsIPSAS.EOF))
%>
<tr>
<td><%=(rsIPSAS.Fields.Item("English").Value)%></td>
<td><%=(rsIPSAS.Fields.Item("Chinese").Value)%></td>
</tr>
<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
rsIPSAS.MoveNext()
Wend
%>
</tbody>
</table>

replace

rsIPSAS.Fields.Item("English").Value 这个是你要的结果吧

改成

replace(rsIPSAS.Fields.Item("English").Value,"关键词","<H1>关键词<H1>")

假设H1 就是你要的效果 你在CSS里面做

以上是在asp 输出的时候直接替换 你要注意一下那些双引号之类的

1楼是说在js里面做 根据你的需要 你自己选择一下追问

终于弄懂了。还想请教:如何将搜索设置为在Access的表的多个字段中搜索关键词?目前我只能设置为在一个字段中搜索?

追答

SELECT * FROM IPSAS WHERE English LIKE ?

ENLIISH 是一个字段

你可以写成 where 字段一 link ? or 字段2 link ? or 字段3 like ......

参考技术A 又是dw的代码,,,,,不看,,, 参考技术B 直接在JS中用 replace 就行啦追问

感谢您的回答,但本人不太懂编程,您能能否说得详细一些?多谢

Elasticsearch查询结果高亮操作实战

文章目录

高亮显示

什么是高亮显示?

在进行关键字搜索时,搜索出的内容中的关键字会显示不同的颜色,称之为高亮

百度搜索关键字"狂飙",如下所示:

或者在淘宝搜索“手机”,如下所示:

我们可以发现搜索的关键字在搜索到的信息上都变成了红色高亮

高亮显示原理

通过开发者工具查看高亮数据的html代码实现:

ElasticSearch可以对查询出的内容中关键字部分进行标签和样式的设置,但是你需要告诉ElasticSearch使用什么标签对高亮关键字进行包裹

代码实现

这里要用到ElasticSearch的高亮数据对象HighlightBuilder

  • 构建一个HighlightBuilder对象
  • 设置高亮字段(title)
  • 使用preTags设置高亮前缀(<font color=’red’>),postTags设置高亮后缀(</font>
  • 将高亮添加到searchRequestBuilder
// 设置高亮数据
HighlightBuilder hiBuilder=new HighlightBuilder();
hiBuilder.field("title");
hiBuilder.preTags("<font style='color:red'>");
hiBuilder.postTags("</font>");
searchRequestBuilder.highlighter(hiBuilder);

完整测试代码如下:

@Test
//高亮查询
public void test11() throws Exception
    // 创建Client连接对象
    Settings settings = Settings.builder().put("cluster.name", "my‐elasticsearch").build();
    TransportClient client = new PreBuiltTransportClient(settings)
            .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),
                    9300));
    // 搜索数据
    SearchRequestBuilder searchRequestBuilder = client
            .prepareSearch("blog").setTypes("article")
            .setQuery(QueryBuilders.termQuery("title", "要高亮的关键词"));
    //设置高亮数据
    HighlightBuilder hiBuilder=new HighlightBuilder();
    hiBuilder.preTags("<font style='color:red'>");
    hiBuilder.postTags("</font>");
    hiBuilder.field("title");
    searchRequestBuilder.highlighter(hiBuilder);
    //获得查询结果数据
    SearchResponse searchResponse = searchRequestBuilder.get();
    //获取查询结果集
    SearchHits searchHits = searchResponse.getHits();
    System.out.println("共搜到:"+searchHits.getTotalHits()+"条结果!");
    //遍历结果
    for(SearchHit hit:searchHits)
        System.out.println("String方式打印文档搜索内容:");
        System.out.println(hit.getSourceAsString());
        System.out.println("Map方式打印高亮内容");
        System.out.println(hit.getHighlightFields());
        System.out.println("遍历高亮集合,打印高亮片段:");
        Text[] text = hit.getHighlightFields().get("title").getFragments();
        for (Text str : text) 
            System.out.println(str);
        
    
    //释放资源
    client.close();

以上是关于Asp如何将搜索结果中的关键字用高亮显示?的主要内容,如果未能解决你的问题,请参考以下文章

高亮显示UILabel中的子串

编辑器是如何在搜索关键字时全文相对应的关键字高亮

Elasticsearch查询结果高亮操作实战

vc6.0如何高亮显示mfc关键字

实现高亮搜索文字?

elementUI table实现搜索关键字高亮显示