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>
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 ......
感谢您的回答,但本人不太懂编程,您能能否说得详细一些?多谢
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如何将搜索结果中的关键字用高亮显示?的主要内容,如果未能解决你的问题,请参考以下文章