我的团队让我在Cassandra和SOLR之间做出选择,以便更快地回复@ frond结束查询.我告诉他们,Cassandra是NOSQL db的东西,而SOLR是索引的东西.但后来他们说我们可以将完整的数据库推送到SOLR(就像使用SOLR作为数据库),或者我们可以使用Cassandra和SOLR.一切困惑.
我们处理的数据量大约是10亿分布在4个MySQL表(使用连接获取),我们只从网站上读取查询.我们不需要全文搜索
我认为SOLR不容易被击败的是它的全文搜索功能,但是我们在我们的情况下不需要它.
那么SOLR还有哪些Cassandra无法提供的内容以及Cassandra在特定情况下可以取代SOLR的内容呢?
换句话说,谁会表现得更好?卡桑德拉一个人?SOLR作为一个单独的数据库?或者两者在一起?最重要的是为什么以及为什么不呢?
对我来说,以强有力的观点来支持我的选择非常重要,好像为什么在我的下一次团队会议期间为什么一个比其他人好.
并提前感谢.
编辑:
我们正在使用Cassandra数据库,该数据库将存储PB级数据.我们正在考虑使用ElasticSearch或Solandra,但我们正在享受一个有趣的时间来决定使用哪个.我想知道我们的数据库是否会变得太大.我知道ElasticSearch是可扩展的,但在多大程度上 - 特别是对于Cassandra数据库.
另一方面,Solandra是为Cassandra制作的,具有很高的可扩展性,但又在多大程度上?
两者都是可扩展的,但使用Cassandra的可扩展性如何?
我有一个包含许多条目的Solr索引,并在查询时返回一些子集 - 每个条目都有一些分数,(明显).一旦结果与分数一起返回,我希望能够"保留"高于某个分数的结果(即仅具有特定质量的结果).当返回的子集可能是什么时,是否可以这样做?
我问,因为在某些查询中似乎有一个得分为0.008的结果导致了一个不错的匹配,而其他查询得分较高会导致匹配不佳.
理想情况下,我只是在寻找一种方法来获取顶级x条目,只要它们至少具有一定的质量.
提前致谢!
是否可以突出显示整个查询字词?当我要求"美国"时我想得到:
<em>United States</em>
Run Code Online (Sandbox Code Playgroud)
并不是:
<em>United</em> <em>States</em>
Run Code Online (Sandbox Code Playgroud)
我在整个互联网上搜索了一个答案,使用了hl.mergeContiguous,hl.usePhrasesHighlighter和hl.highlightMultiTerm参数的所有组合,仍然无法使其工作.
我的查询是:
http://localhost:8983/solandra/idxPosts.proj350_139/select?q=post_text:"Janusz Palikot"&hl=true&hl.fl=post_text&hl.mergeContiguous=true&hl.usePhrasesHighlighter=true&hl.highlightMultiTerm=true
Run Code Online (Sandbox Code Playgroud)
答案是:
...
<arr name="post_text"><str>Tag: <em>janusz</em> <em>palikot</em> - Sowiniec: "Sowiniec"</str></arr>
...
Run Code Online (Sandbox Code Playgroud)
我的"post_text"字段是:
<field name="post_text" type="text" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true" required="true" />
Run Code Online (Sandbox Code Playgroud)
我的"文字"类型是:
<fieldType name="text" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.TrimFilterFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_pl.txt" />
<filter class="solr.ReversedWildcardFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.TrimFilterFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_pl.txt" />
</analyzer> …Run Code Online (Sandbox Code Playgroud) 我有一个Solr索引,文档字段类似于:
id, body_text, date, num_upvotes, num_downvotes
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,创建一个带有一些整数id和一些body_text(最多500个字符)的文档.日期设置为输入时间,num_upvotes并num_downvotes从0开始.
我的应用程序为用户提供了对上述内容进行upvote和downvote的能力,以及我想在Solr而不仅仅是数据库中跟踪这个内容的原因是我希望能够将upvotes和downvotes的数量考虑到我的内容中search.
这是一个问题,因为您不能简单地更新solr文档(即up_votes的增量数),并且您必须替换整个文档,这可能是相当低效的,因为它需要命中我的数据库以再次获取所有相关数据.
我意识到解决方案可能需要不同的数据布局,或者可能需要多个索引(尽管我不知道你是否可以在solr内核中查询/得分).
有人能提供任何有关如何解决这个问题的建议吗?
我正在使用以下技术开发网站,
Ruby on Rails,(ruby 1.8.7,rails 2.3.5)Cassandra 0.6.8,
我想使用Lucandra索引Cassandra数据库,我该怎么做?是否有任何RESTful API或任何可用的Web服务,以便我可以将数据推送到索引数据库?如果有任何使用Lucandra的ROR示例,请分享,这真的有助于我们前进.或者指导我实现这一目标的一些步骤.
我谷歌搜索了3天,我没有在ROR中使用Lucandra的任何例子.
我们将提前感谢您的帮助