2017-04-13 63 views
0

我在SolrCloud 5节点群集,每个节点有2个碎片,Solr MoreLikeThis不适用于多个碎片?

Solr的版本:6.3.0

enter image description here

现在

当我运行MLT查询它只是每个节点并没有按返回结果”牛逼分发它们在所有碎片/节点,即

http://10.0.1.15:8983/solr/test_ingest/mlt?q=advertising_id%w72w9424620427042&fl=score&fl=advertising_id&mlt.fl=channel_name&mlt.fl=show_name&mlt.fl=language&mlt.mindf=1

给出同时

没有结果10

http://10.0.1.119:8983/solr/test_ingest/mlt?q=advertising_id%w72w9424620427042&fl=score&fl=advertising_id&mlt.fl=channel_name&mlt.fl=show_name&mlt.fl=language&mlt.mindf=1

给出的结果,

我已经甚至试图指定此作为PARAM:

碎片= 10.0.1.84:8983/solr的/ test_ingest_shard3_replica1,10.0.1.84:8983/solr的/ test_ingest_shard8_replica1, 10.0.1.206:8983/solr/test_ingest_shard2_replica1,10.0.1.206:8983/solr/test_ingest_shard7_replica1,10.0.1.15:8983/solr/test_ingest_shard5_replica1,10.0.1.15:8983/solr/test_ingest_shard10_replica1,10.0.1.207:8983/solr/test_ingest_shard1_replica1, 10.0.1.207:8983/solr/test_ingest_shard6_replica1,10.0.1.119:8983/solr/test_ingest_shard9_replica1,10.0.1.119:8983/solr/test_ingest_shard4_rep lica1

我的请求处理:

<requestHandler name="/mlt" class="solr.MoreLikeThisHandler"> 
</requestHandler> 

如何配置MLT运行分布式搜索? 谢谢

回答

1

就我所知,更像这个处理程序,只有一个碎片,所以它只会考虑本地碎片中可用的文件。

More Like This Query Parser确实提到它是Solr Cloud-aware,所以请尝试使用它。

MLTQParser支持检索与指定文档类似的文档。它使用Lucene现有的MoreLikeThis逻辑,并且也在SolrCloud模式下工作。这里使用的文档标识符是唯一的id值,而不是Lucene内部文档ID。返回的文档列表不包含查询的文档。

查找类似id = 1的文档的文档并使用名称字段获得相似性。

{!mlt qf=name}1

添加更多约束,以什么作为类似使用mintf和mindf资格。

{!mlt qf=name mintf=2 mindf=3}1

+0

嘿,感谢它的工作,虽然单个ID查询时间大约为15-30毫秒,我需要得到MLT周边的1-4万的ID,这将是最好的方法为了从java中做到这一点,我已经在ThreadPool中使用了CloudSolrClient。 –

+0

如果您每次查找花费30毫秒,并且您有4百万个文档,那么将在37个小时内完成。所以完全可以在几天内用你已有的东西来完成。如果您需要更多容量,则跨越更多副本的查询应该可以工作,至少可以并行执行更多查询(这不会缩短查询时间,但您应该能够并行运行更多查询,而不会显着减速) 。 – MatsLindh