Q
字符串模糊查詢
0
A
回答
1
我想說它取決於上下文:如果你有數百萬個名字,一個合同履行和一個產品爲你做,那麼我會說去爲它,忘了自己寫。
但是,在面試問題的背景下,我的建議是DAWG,其中包含所有可能的錯誤。
很久以前,我聽說拼寫檢查器包含可能出現錯誤的單詞列表(而不是嘗試與有效單詞列表進行匹配),但我不知道這是多麼真實。
我曾經在一個單詞列表中找到一個單詞(帶有錯誤),但它並不侷限於一個單一的錯誤,也沒有大量的內存可用。所以這些單詞只是作爲一個列表存儲(一個DAWG需要節點和指針,這將需要太多的開銷)。
1
我建議將文件中的名稱存儲到trie或DAWG(更好的空間效率)中。 到達名稱後,開始遍歷數據結構。你將有4個變種:
- 發現名稱 - >名稱是有效的數據結構
- 死衚衕 - >檢查留在名稱中的字符數,如果沒有超過1 - >名稱有效;否則無效。
- 名稱已結束且尚未到達結構中的葉子 - >檢查是否至少有一個葉子附加到當前位置(將採用O(字母大小)) - >如果是,名稱已驗證;否則無效。
- 在詞語中間遇到的差異 - >繼續從下一個字符開始遍歷 - >不允許更多錯誤(從這一點開始,第2段& 3無效)。
1
對於第一個問題(確切搜索),您可以使用散列表或trie。布盧姆過濾器可能會在早些時候告訴您「否」,並且空間開銷很大,但永遠不會告訴您一個確定的「是」。
對於第二個問題(模糊搜索),需要更先進的技術。查看博客http://blog.srch2.com/2012/03/fuzzy-search.html,討論解決這個問題的不同方法。
相關問題
- 1. ElasticSearch上的查詢字符串的模糊查找
- 2. 字節到字符串 - 模糊字符
- 3. 模糊字符串匹配
- 4. 匹配模糊字符串
- 5. 多處理模糊模糊字符串搜索 - python
- 6. IIS7 URL重寫模式查詢模板查詢字符串
- 7. 字符串上的模糊匹配
- 8. 與agrep匹配的模糊字符串
- 9. 模糊字符串匹配使用R
- 10. Lucene.NET(字符串模糊匹配)
- 11. 模糊字符串匹配python
- 12. 查詢字符串
- 13. 查詢字符串
- 14. 查詢字符串
- 15. 查詢字符串
- 16. 查詢字符串
- 17. tesseract:字符模糊
- 18. 與模型和查詢字符串
- 19. 搜索模糊查詢 - Elasticsearch
- 20. PayloadTermQuery中的模糊查詢
- 21. 查詢錯誤,列模糊
- 22. 重定向查詢字符串的URL非查詢字符串
- 23. flask url_for()將查詢字符串當作查詢字符串
- 24. 使用查詢字符串查詢字符串列表?
- 25. 將查詢字符串重定向到非查詢字符串?
- 26. 查詢字符串的查詢字符串
- 27. 用模糊字符對字符串/ strlen進行迭代
- 28. ElasticSearch查詢字符串查詢default_operator
- 29. Grails域名字符串查詢查詢
- 30. Doctrine2查詢字符串查詢
這將導致相當大的空間開銷:2 *字母大小*字數。根據確切的要求,最好存儲有效的單詞並檢查輸入的偏差。 – SomeWittyUsername