我想在我的離線(android)應用程序中執行全文搜索來搜索用戶生成的筆記列表。像谷歌一樣的全文搜索
我想它表現得就像谷歌(因爲大多數人已經習慣查詢到谷歌)
我最初的要求是:
- 快速:像谷歌或儘可能快,有100000個文件,每個200個字。
- 搜索兩個單詞只應返回包含兩個單詞(不只是一個單詞)的文檔(除非使用OR運算符)
- 不區分大小寫(又名:規範化):如果我有單詞「Hello」搜索它應該匹配的'hello'。
- 變音符號不敏感:如果我有'así'這個詞,搜索'asi'應該匹配。在西班牙語中,很多人不正確地要麼不放置變音符號,要麼不能正確放置它們。
- 停用詞的消除:爲了不會有像'和'這樣的巨大索引毫無意義的詞,''或'for'根本不應該被索引。
- 字典替換(又名:詞幹):類似的詞應該被索引爲一個。例如,'飢餓'和'飢餓'的例子應該用'飢餓'代替。
- 短語搜索:如果我有文字'Hello world!'搜索''world hello''不應該匹配它,而是應該匹配''hello world''的搜索。
- 如果未指定字段(不僅僅是默認字段),則搜索所有字段(在多字段文檔中)
- 在鍵入時自動完成搜索結果以提供熱門搜索。 (就像谷歌建議)
我該如何配置一個全文搜索引擎儘可能像谷歌一樣行事?
(我在開源的Java,特別是Lucene的最感興趣)
如果你指向Lucene,它可以處理許多開箱即用且可擴展的問題,那麼你可以針對你遇到的問題具體說明一下嗎? – 2009-12-30 00:38:41
你在找什麼? – SLaks 2009-12-30 00:39:15
您確實意識到Google採用了http://en.wikipedia.org/wiki/Query_expansion並利用了其他人的搜索記錄。如果每個搜索「電腦鼠標」的人最終都會點擊yahoo.com(製作它),那麼隨着時間的推移,yahoo.com將成爲「電腦鼠標」的首個搜索結果。 – 2009-12-30 00:44:27