你怎麼做,這樣,當你搜索「異形大戰鐵血戰士」,你還可以得到帶有字符串「外星人大戰鐵血戰士」結果與「S」
例如http://www.torrentz.com/search?q=alien+vs+predator
怎麼有他們實施了這個?
是這種先進的搜索引擎的東西?搜索查詢「異形大戰鐵血戰士」
回答
這就是所謂的Word Stemming。當文本被編入索引時,單詞被「阻止」到它們的「根」。因此,戰鬥變成了戰鬥,滑雪變成了滑雪,跑步變得奔跑等等。對於用戶在搜索時輸入的文本也做了同樣的事情,因此當搜索項與索引中的值相比時,它們匹配。
Lucene項目支持這個。我不認爲它是一個高級功能。特別是在Google預期的情況下。
這是搜索的基本功能引擎,而不僅僅是一個程序,您的查詢與一組預定義的結果相匹配。
如果你有時間,this是一個很好的閱讀,所有關於不同的算法,以及它們是如何實現的。
檢查複數是詞幹的一種形式。詞幹是搜索引擎和其他文本匹配的常見特徵。請參閱維基百科頁面:http://en.wikipedia.org/wiki/Stemming以瞭解執行干擾的多種算法。
通常當一個人建立了一個搜索引擎來搜索文本,一個將構造一個查詢是這樣的:
SELECT * FROM TBLMOVIES WHERE NAME LIKE '%ALIEN%'
這意味着子ALIEN
可以在NAME
領域的任何地方出現,所以你」我會找回像ALIENS
這樣的字符串。
當單詞索引時,它們被索引爲根形式。例如,對於「外星人」,「外星人」,「外星人」,「外星人」等都被存儲爲「外星人」。
而當單詞是搜索搜索引擎時,也只搜索根形式「異形」。
這通常被稱爲波特干擾算法。你可以在這裏下載你喜歡的語言的實現 - http://tartarus.org/~martin/PorterStemmer/
你可以嘗試使用soundex()作爲你的字符串的模糊匹配。如果你用標題保存soundex,然後使用LIKE'XXX%'比較該索引與子字符串,你應該有一個體面的匹配。子串數越高,他們將匹配得越近。
查看文件:http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_soundex
- 1. MySql查詢(大腦挑戰)
- 2. MySQL的搜索戰術
- 3. ASP.NET搜索索引建設戰略
- 4. 組通過查詢挑戰
- 5. 戰鬥,船舶SQL查詢
- 6. 從單一表格匹配戰士
- 7. 曖昧模板,代碼戰士
- 8. 代碼戰挑戰
- 9. 鐵血ccDrawCircle
- 10. 鐵血陣列怪異的行爲
- 11. 有趣的Oracle分析查詢挑戰
- 12. 彈性查詢篩選器挑戰
- 13. .htaccess網址重寫挑戰與查詢
- 14. Xamarin.Android - 挑戰與SQLite的ORM查詢
- 15. 具有挑戰性的mysql INTERSECT查詢
- 16. MySQL動態查詢挑戰 - 請幫助!
- 17. 一張表,兩列MYSQL查詢挑戰
- 18. SQL查詢和強制關閉挑戰
- 19. 顯示在每個戰區查詢
- 20. Maven戰爭:限制戰爭
- 21. A碼的戰爭挑戰
- 22. 戰爭
- 23. 戰列艦卡在戰鬥板實施
- 24. 挑選挑戰4:蟒蛇挑戰
- 25. Maven瘦戰與戰爭路線
- 26. maven yui壓縮戰爭:戰爭
- 27. grep的挑戰 - 搜索任意數量的字符後提取搜索模式
- 28. Facebook的URL圖形搜索 - 頁查詢
- 29. Facebook圖形查詢鏈接搜索流
- 30. Google地圖搜索與mongodb地理空間最佳戰略
爲什麼-1,沉默刺客? – 2010-09-28 19:44:45