我想在我的离线(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