Full-Text-Search
如何使用多列匹配相似記錄
給定一個事件的 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)