社区
Java SE
帖子详情
如何实现模糊查找?
shenqiudeye2
2010-06-17 07:28:19
如何实现模糊查找?
我在做一个小的查询软件,j2se,access,swing.
输入:中国建行
能找到:中国建设银行
输入:中国建设银行
能找到:中国建行
要求是输入关键字后,查询,得到一个查找结果的列表,根据匹配程度排序,就像百度一样。
我找了很多资料,正则,sql模糊查找,java分割字符串等,还是没能解决,请高手来教教我。
...全文
1034
21
打赏
收藏
如何实现模糊查找?
如何实现模糊查找? 我在做一个小的查询软件,j2se,access,swing. 输入:中国建行 能找到:中国建设银行 输入:中国建设银行 能找到:中国建行 要求是输入关键字后,查询,得到一个查找结果的列表,根据匹配程度排序,就像百度一样。 我找了很多资料,正则,sql模糊查找,java分割字符串等,还是没能解决,请高手来教教我。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shenqiudeye2
2010-06-19
打赏
举报
回复
谢谢各位的回答,非常感谢,我查了很多资料,也发现我的问题不仅仅是模糊查询的问题了,和搜索引擎有点靠边了呵呵。
能不能请各位高手弄些代码上来,我看你们说的文字,并不能解决问题啊
heartraid86
2010-06-19
打赏
举报
回复
如果仅仅是在众多词条中查找相似的词语,可以试试一些搜索引擎中查询扩展的方法。
有一种算法叫字符串编辑距离,可以算算"中国建设银行"与"中国建行"的编辑距离。
或者使用NLP领域的点互信息方法,计算"中国建设银行"与"中国建行"的PMI值,来确定两者是否有很大的联系。
现在基于维基百科做的词条相似度计算也很多,看看一些信息检索中查询扩展的论文应该很有用
small_agile
2010-06-19
打赏
举报
回复
我不知道你的swing編程是怎麼樣子的. 但是在j2ee中是這樣實現的.
將前臺的值得到.. 在寫sql語句的時候
package com.spring.mvc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class csnd2 {
public static void main(String args[])throws Exception{
String driver= "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url="jdbc:sqlserver://localhost:1433;database=???";
String username = "?";
String password ="";
Connection conn;
PreparedStatement pstmt;
Class.forName(driver);
conn = DriverManager.getConnection(url,username,password);
String str = "???";
String sql="select ???? from tableName where ?? like '"+str+"'";
pstmt = conn.prepareStatement(sql);
pstmt.executeUpdate();
}
}
宁静-夏天
2010-06-19
打赏
举报
回复
http://qieqie.javaeye.com/blog/110148
这个是 王切切 的blog地址,里面有他写的分词器,里面有你需要的东西。
如果简单做只需要它的词库检索部分代码。
他的代码值得你花时间全部读一次,写的不错。具体你再有问题再问吧。
方法告诉你了,做要自己了。
宁静-夏天
2010-06-18
打赏
举报
回复
如果仅仅考虑分词,并不会涉及搜索引擎其他的部分的。
分词只是搜索引擎十分小的一部分,当然分词做牛也不小。
但简单的分词需求并没有大家想的这么夸张,了解了就会觉得很简单。
surelei
2010-06-18
打赏
举报
回复
搜索引擎是有词库的,还会做一些词法分析,LZ的问题不是模糊查询的问题,是搜索引擎的问题。
wakeUpDoNottLazy
2010-06-18
打赏
举报
回复
不知道真正的搜索引擎是怎么做到的!
但是如果让我做,最简单的就是要建立一些映射,如同 LS 所说
宁静-夏天
2010-06-18
打赏
举报
回复
楼主如果不涉及搜索引擎,只是做这个简单的搜索功能还是比较容易的。
维护两个词库
----------
全称词库
简称词库
----------
他们存在简称和全称的对应关系。
输入在两个词库进行检索,检索成功返回时将简称和全称全部返回即可。
词库检索可以考虑 庖丁分词的 词库代码,他写的不错。也可以自己写。
宁静-夏天
2010-06-18
打赏
举报
回复
这个属于词库检索问题,的确是搜索引擎中经常遇到的问题。
---------------
输入:中国建行
能找到:中国建设银行
输入:中国建设银行
能找到:中国建行
---------------
但达到这些效果做法也不一样。
词库维护、检索为了做到人性化是需要考虑简称转化问题。好的分词,词库分词功能中都包含简称和全称转化。
该功能也类似于中文数字和阿拉伯数字的转化等等。
大多是做统一的转化。一般是在查询时通过把简称转化为全称(即简称词库检索得到后,自动返回对应的全称)。即 中国建行 -> 中国建设银行
所以一般如下需求
输入:中国建设银行
能找到:中国建行
这种需求是不太会去做的。
因为搜索检索的索引文件都是以一个一致的内容在做索引,要不就是全称要不就是简称。
但撇开以上的说法,把 中国建设银行、中国建行 放在同样的地位上,那么要达到楼主的需求,就需要考虑对输入的文字进行分词时,采用最大分词(即分词最多的模式)。
然后再通过分到的词去检索。
取个例子吧
词库包含:中国 建设 银行 建行 建设银行 中国建行 中国银行 中国建设银行 ......
输入:中国建设银行
分词得到:中国、中国建设、中国建设银行、建设、建设银行、银行
根据分到词拼装query term(配置单元)匹配情况如下:
中国 -> 中国、中国建设、中国建行、中国银行、中国建设银行
中国建设 -> 中国建设、中国建设银行
中国建设银行 -> 中国建设银行
建行 -> 建设、建设银行
建设银行 -> 建设银行
银行 -> 银行
不涉及简称转化,词库中的只有‘建行’是查不出来的,只能查到建设银行。这个还只是一个小例子。
但查出来的东西太多了,这个往往不是最好的结果。
zi_yu
2010-06-17
打赏
举报
回复
输入:中国建设银行
能找到:中国建行
这种模糊查询倒没有试过
luffyke
2010-06-17
打赏
举报
回复
sql like关键字
OR
lucene检索
smmi
2010-06-17
打赏
举报
回复
你要做的不是模糊查询,而是一个搜索引擎
chosen0ne
2010-06-17
打赏
举报
回复
试着用用lucene
xqyky
2010-06-17
打赏
举报
回复
输入:中国建设银行
能找到:中国建行
=========================
这绝不是模糊查询出来的。
这些常用关键词都有索引的。
冰思雨
2010-06-17
打赏
举报
回复
这是检索功能,与普通的查找,应该是有区别的吧?
BigKing911
2010-06-17
打赏
举报
回复
每天回帖是有几分的哦!
chengyu2099
2010-06-17
打赏
举报
回复
输入:中国建设银行
能找到:中国建行
模糊查询这么久,这个问题我倒没有想过,杯具,顶!
luowen2008
2010-06-17
打赏
举报
回复
期待大师们分享你们的心得
my5sky
2010-06-17
打赏
举报
回复
这得用到算法了吧,拆分词组,再匹配检索吧
cwjieNo1
2010-06-17
打赏
举报
回复
应当是输入中国建行,能 查找到 中国建设银行·
ztree
模糊
搜索demo
ztree
模糊
搜索demo,根据关键字显示叶子节点
Qt5
实现
音乐播放器(清爽版)
中秋之前,以供娱乐
实现
: (1)播放、暂停、上一首、下一首 (2)歌词显示 (3)批量添加歌曲文件(夹) (4)
查找
歌曲(可进行
模糊
匹配) (5)播放模式选择(单曲播放、单曲循环、随机播放等) (6)删除、批量删除 Bug挺多,有待完善
关于C/C++程序里如何
实现
模糊
查找
相信学过C/C++的都应该了解如何在数组里面去
查找
数据,利用for循环便能很容易
实现
查找
的功能,但若数组里的数据是字符串类型,而你又恰好需要
实现
的是根据关键字进行
查找
的话,那么按部就班对数组里的字符串进行一个个字符的对比是很难
实现
的,这时候就要想其他的办法了,C里面有一个函数便可以从侧面
实现
模糊
查找
,它就是strstr()函数,该函数搜索一个字符串在另一个字符串里的第一次出现,并返回所搜索到字符串
QML,QT,C++
实现
模糊
查找
功能
** QML+C++
实现
模糊
查找
功能 ** 由于QML中不能直接
实现
模糊
查找
功能,所以功能的是现在后台C++部分
实现
在这里介绍一种容器QSet,QSet具有去重的作用,可将在将数据保存到容器的时候将数据中重复的部分删除,也防止在
查找
的时候出现重复数据 上代码,看备注详解 Q_INVOKABLE QVariantList DataManager::search(QString zoneId) { if (curFiles == nullptr) { return QVariantList(); }
Python第四篇——文件基础
模糊
查找
与管理
问题描述 通过python
实现
在文件夹位置下一级文件的删除、
模糊
查找
和重命名等文件管理操作。 步骤描述和
实现
步骤描述
模糊
查找
实现
删除文件 重命名 编制主函数
实现
文件操作通过os包
实现
,对于文件夹操作,除去
查找
操作可以进行
模糊
查找
外,删除和重命名文件不可操作:
模糊
查找
#
查找
操作 ef find_files(file): find_file = input("请输入需要
模糊
查找
的文件名:") end_file = input("文件类型为(如果没有文件后缀要求或
查找
要素有文件夹
Java SE
62,635
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章