我正在使用Ruby和Sinatra创建一个wiki,并且需要在几个HTML渲染器(redcarpet,markdown,creole,slim,haml ......)中搜索存储为文本文件的wiki。 Ruby中有很多选项,比如ferret,solr或lucene gems,它们处理数据库中的结构化数据,但不能搜索带有自由文本的文件。
现在我打开文本文件并使用regExp进行搜索,但随着wiki的增长,很快就会变得太慢。是否有任何宝石可以索引地图中的所有文本文件以及我可以使用哪个索引来搜索文件?它需要是一个只有Ruby的解决方案或者可以从Ruby中轻松使用的东西。
我没有使用常见的wiki之一,因为没有一个具有我需要的功能。
我在一些旧的ASP应用程序中使用了Windows索引服务,但我对该解决方案并不满意。
我的操作系统是Windows Vista,7和Windows Server 8。
编辑:不需要数据库安装/没有保持服务器运行解决方案是可取的,所以例如使用sqlite或文件存储或类似的东西
答案 0 :(得分:2)
查看ThinkingSphinx
,Sphinx
和ActiveRecord
之间的红宝石桥。使用此gem可以让您轻松地为模型编制索引,并在应用程序的所有模型上执行简单搜索和全文搜索。
主页和项目文件:
http://freelancing-god.github.com/ts/en/
很好的介绍如何使用它:
http://www.synbioz.com/blog/2012/05/18/full_text_search_with_sphinx
我相信,如果与Sinatra
合作,与ActiveRecord
的集成将是无缝的。
答案 1 :(得分:2)
我个人会选择ElasticSearch:http://www.elasticsearch.org/
它很容易运行,并且有一些宝石可以很容易地与Ruby进行通信(例如轮胎)
我不知道任何高性能的基于文本文件的完整搜索引擎,所以我真的认为你最好通过寻找一个简单的服务器,ElasticSearch提供imho。
答案 2 :(得分:1)
我在Rails 2.3 - 3.2中一直使用Solr和SQL和Mongo数据库,到目前为止它对我来说一直很好。看看this railscast。 Solr是Apache开发的全文搜索Java客户端,可以索引微软文档,文本文件,富文本文档 甚至在图像上做OCR。