2017-04-13 58 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