我有一个包含列的表:author firstname,author lastname和booktitle 多个用户通过导入插入数据库,我想避免重复。 所以我想尝试做这样的事情: 我在db中有一条记录: 名:“艾萨克” 姓氏:“Assimov” 标题:“我,机器人”
如果用户尝试再次添加,则基本上是非拆分文本 (不会分成作者姓名,作者姓氏和书签) 所以它基本上是这样的: “艾萨克·阿西莫夫 - 我的机器人” 要么 “阿西莫夫,艾萨克 - 我的机器人” 要么 “我是Isaac Asimov的机器人”
你知道我到达了哪里?
(我不能强迫用户将所有书籍分成作者名字,作者姓氏和书签,我甚至不喜欢强迫用户的想法,因为它不太用户友好)
将所有这些可能的bookdata场景与我在数据库中的内容进行比较的最佳方法(在SQL中)是什么,而不是两次添加相同的书。我在考虑建议用户的可能性:“这是你想要添加的书吗?” (想象一个列表而不是这个词,就像在stackoverflow上一样 - 问问题 - 相关问题。
我在考虑
soundex
甚至可能是
like
运营商,但到目前为止我没有得到我希望的结果。
答案 0 :(得分:0)
您可以为soundex/difference
实现明显更好的模糊匹配算法,请查看Beyond SoundEx - Functions for Fuzzy Searching in MS SQL Server。
您还可以查看实施全文目录并使用“搜索引擎”样式FREETEXT()
:
是WHERE子句中使用的谓词 搜索包含的列 值的基于字符的数据类型 符合意义而不仅仅是 的确切措辞 搜索条件
根据您的操作,您也可以使用ISBN网络服务来获取规范化数据。