利用标签和关键字全栈搜索
- 实现效果1:当点击标签之后跳转搜索
网站一共有3个主要模块,乡村介绍模块,用户旅游见闻介绍模块,还有用户讨论模块 ,当点击标签的时候会进行搜索首先展示全部,同时利用ajax对乡村,见闻,秉烛夜谈(论坛)模块进行搜索。
这样的前提在于数据库表的设计。
数据库有关的有主要有2类个表。一个是tag标签表结构如下:
id tag_name
另一个是tag和这个三个模块的关系表
id otherId tag_id flag
其中第一个表中的标签不能重,也就是每一个用户在发表论坛提问或者编写文章的时候,都会将标签存入数据库,然后这些标签设置成unique。在第二个表中的otherId和flag一起作为中间关系表,其中flag可以代表article(也就是用户文章),question(也就是用户论坛提问),然后这个otherId就是对准article或者question各自表中的ID号,也就是说otherID根据flag来确定这个ID是question表中主键id还是其他表中的主键id。
而tag_id就是第一个表中的标签ID号。所以当用户搜索一个标签“AA”的时候,先从第一个标签表中得到标签ID号。随后带着这个ID号去第二个表中进行全栈搜索,得到所有的有关这个标签的所有信息。
然后通过ajax一步刷新,进行分页和展示
- 实现效果2:搜索多关键字高亮处理
、
利用全排列的方式,将搜索关键字,假如搜索:ABC或者BCA或者CBA会得到相同的搜索结果,同时将ABC的排序高与BA或者BC只有两个关键字的搜索信息。
这样有一个不好的效果,就是搜索效率,虽然看上去搜索结果的确更加符合输入的搜索信息,但是搜索显得很拖拉,这是日后会加以改进的地方
分割关键字全排列:
package com.Algorithm;
/*
* 分割关键词
* 去前尾空格 再按中间空格取出关键词
*/
public class KeywordSplit {
public String[] getKeyWord(String str){
str=str.trim();
char kw[]=str.toCharArray();
String wd="";
String word[]=new String[100];
int j=0;
for(int i=0;i<kw.length;i++)
{
if(kw[i]!=' '){
wd=wd+kw[i];
}
else if(!wd.equals("")){
word[j]=""+wd;
wd="";
j++;
}
}
if(!wd.equals(""))word[j]=wd;
String word1[]=new String[j+1];
System.arraycopy(word, 0, word1, 0, j+1);
return word1;
}
}
“`
package com.Algorithm;
/*
* 进行全排列
*/
public class Arrange {
private String hql="'%";
public String getHql() {
return hql;
}
public void arrange (String a1,String[] str, int st, int len)//a1代表数据库字段 content(在content中匹配 % %)
{
if (st == len - 1)
{
for (int i = 0; i < len; i ++)
{
hql=hql+str[i]+"%";
}
// 因为后续需要进行执行SQL语句即:**** like '%A%B%' or
// like '%B%A' or like '%A%' or like '%B%'
hql=hql+"' or "+a1+" like '%";
}
else
{
for (int i = st; i < len; i ++)
{
swap(str, st, i);
arrange(a1, str, st + 1, len);
swap(str, st, i);
}
}
}
public void swap(String[] str, int i, int j)
{
String temp = new String();
temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
“
SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架,搭建一个前后端web网站(1)
SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架,搭建一个前后端web网站(2)
SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架,搭建一个前后端web网站(3)
SSH:利用Struts2+Hibernate4+Spring4+SQLServer框架,搭建一个前后端web网站(4)