Full-Text-Search

如何使用多列匹配相似記錄

  • April 4, 2017

給定一個事件的 GUID,比如登錄,我如何利用其他列數據搜尋相似或不同的事件?

例如:找到我類似的登錄名

$$ GUID $${伺服器:“s123”、State=“NY”、Status=“503” 等…} 要麼

找到與給出的範例相反的登錄名?

我覺得它必須有一個名字,但我認為全文或“%Like%”語法是不夠的。

使用 solr 或 elasticsearch 索引數據是解決方案嗎?

最簡單的方法是計算匹配的列數:

select
n.id as needle_id,
h.id as haystack_id,
case when n.name = h.name then 1 else 0 end 
+ case when n.phone = h.phone then 1 else 0 end as relevance
from 
needles n
join 
haystack h 
on 
n.name = h.name 
or n.phone = h.phone
order by 
relevance desc;

其中“姓名”和“電話”是表格中的列。如果需要,您可以使用同一張表作為針頭和乾草堆(在表中查找重複項)。

http://blog.databasepatterns.com/2014/12/fuzzy-record-matching-in-sql-p1.html

更正確和更複雜的方法是使用機率記錄連結。它有一個 R 包(recordlinkage

引用自:https://dba.stackexchange.com/questions/169023