感谢。
答案 0 :(得分:10)
现有的“NoSQL”数据库都没有提供可以命名为“全文搜索”的合理实现。到目前为止MongoDB几乎没有任何东西(使用正则表达式进行匹配不是全文搜索,使用$ in或$ on all关键字单词列表中的运算符进行搜索只是“全文搜索”的一个非常糟糕的实现)。使用Solr,ElasticSearch或Sphinx是直截了当的 - 在应用程序级别上实现和集成。您的选择在很大程度上取决于您的要求和当前设置。
答案 1 :(得分:9)
以下是有关Riak Search http://wiki.basho.com/Riak-Search.html的详细信息 并且还有一个presentation
答案 2 :(得分:7)
是。请参阅CouchDB-Lucene这是一个CouchDB扩展,以支持对数据的完整Lucene查询。
答案 3 :(得分:5)
如果我记得的话,MarkLogic有更好的文本搜索选项。这是一个discussion on the topic,虽然它是在他们的博客上,但是来自他们的作家。
答案 4 :(得分:4)
我参与使用Solandra(基于Cassandra的Apache Solr)开发应用程序。根据我的经验,该系统非常稳定,能够处理TB +数据。由于以下原因,我个人对软件非常满意: 1.由于Cassandra后端而自动分区数据。 2.丰富的查询功能(由于Solr和Lucene)。 3.快速读写(写入速度明显快于读取速度)。
然而目前Solandra,我认为不支持批量突变。也就是说,我可以在Cassandra的一次插入中插入100列,但是Solandra不支持这一点。
答案 5 :(得分:3)
对于MongoDB,还没有完整的全文索引功能,但是管道中可能还有一个perhaps due in v2.2。
与此同时,您可以使用字符串数组字段创建一个简单的反向索引,并在其上放置索引,如下所述:Full Text Search in Mongo
或者,您可以在专用的Solr或Lucene索引中维护并行的全文索引,如果您真的雄心勃勃地从Mongo oplog直接复制到您的全文商店。否则,填充两者并与应用程序逻辑保持同步。
答案 6 :(得分:1)
我刚刚使用MongoDB中的全文启动时使用Sphinx Search中存储的数据完成了此操作。我知道mongo有一个可选择的问题,即为将来的版本添加全文;但是在这一点上他们没有它。
有几种方法可以将您的Mongo信息插入sphinx;然而,我发现最幸运的一个(并且非常容易)是通过xmlpipe2。我花了一点时间才完全理解如何使用它;但是这篇文章:Sphinx xmlpipe2 in PHP有一个很好的展示(至少在PHP中)如何构建文档,然后如何将它插入到sphinx中。
基本上我的配置最终看起来像这样:
source my_source {
type = xmlpipe
xmlpipe_command = /usr/bin/php /www/generateSphinXml.php identifierForMyTable
}
我的索引看起来像这样:
index my_index {
source = my_source
path = /usr/local/sphinx/var/data/my_index
docinfo = extern
min_word_len = 1
mlock = 0
morphology = stem_en
charset_type = utf-8 //<----- This is q requirement however.
enable_star = 1
html_strip = 0
min_prefix_len = 2
}
我在这方面取得了很大的成功;希望你能发现这很有用。
答案 7 :(得分:1)
如果你正在使用PHP,那么在No-SQL数据库MongoDB中有一个很好的全文搜索解决方案,命名为MongoLantern. http://sourceforge.net/projects/mongolantern/
以前我使用Sphinx + MongoDB进行全文搜索,性能很好,但结果质量很差。使用MongoLantern,我目前的搜索得到了很大改善。
MongoLantern is also listed in MongoDB site.
如果你自己尝试,请告诉我。
答案 8 :(得分:0)
cLunce项目。还有上面没有提到的xapian。我使用Sphinx,它非常好,但设置有些笨拙。我实际上更喜欢通过XMLPIPE2将来自Mongo的数据传输到Sphinx,而不是在sphinx.conf文件中使用Sphinx的SQL。
答案 9 :(得分:0)
Solr可以与10gen的Mongo Connector一起使用,它允许在那里推送数据(等等)
https://github.com/10gen-labs/mongo-connector/tree/master/mongo-connector
从他们的例子:
python mongo_connector.py -m localhost:27217 -t http://localhost:8080/solr
答案 10 :(得分:0)
绝对是Solr。这是NoSQL。
它有:
答案 11 :(得分:0)
Couchbase 5.0正在发布基于开源Bleve引擎的全文搜索功能。您为全文启用索引并开始使用数据库中的现有JSON文档。
有关该主题的一些幻灯片和演示视频,同时提到了Elasticsearch和Lucene ...... https://www.slideshare.net/Couchbase/fulltext-search-how-it-works-and-what-it-can-do