或者在solr中搜索

时间:2014-02-21 06:22:36

标签: solr

我的情况是我必须使用多个OR关键字在Solr中搜索文档。现在,关键字的数量可能会超过5000,这导致了一个非常大的查询,具有5000 OR条件。这导致Solr服务器挂起。有没有其他方法可以设计查询工作。查询的简短示例如下所示

tweet_id:337931022601699328 OR 337931064293081089 OR 337931089538584576 OR 337931098761871361 OR 337931138851016704 OR 337931143099854848 OR 337931160082591745 OR 337931163857453056 OR 337931230819516416 OR 337931239996665857 OR 337931287518126080 OR 337931322850951168 OR 337931325648535553 OR 337931331398934528 OR 337931413057830912 OR 337931442363441152 OR 337931448629731329 OR 337931453344129025 OR 337931465016877056 OR 337931482066726912 OR 337931514388029442 OR 337931533149155328 OR 337931645527130114 OR 337931704935256064或337931784459268096或337931845545103360或337931889086185472或337931892668108801或337931963983855617或337932154212319233或337932176454721536或337932193198374912或337932229659459584或337932437290090496或337932436807749632或337932436828725250或337932437449474048或337932448518250496或337932458832035843或337932458634915840或337932458278387712或337932474246119425或337932476209041409或337932477408620544或337932480478842880Ø ř337932478775959554 OR 337932480566931456 OR 337932478763376640 OR 337932481841999872 OR 337932479337992192 OR 337932479296045057 OR 337932479333797889 OR 337932484614434816 OR 337932484606038017 OR 337932482777317376 OR 337932484664758272 OR 337932482785718273 OR 337932484589273088 OR 337932487399444481 OR 337932489031032833 OR 337932489114923008 OR 337932486573166592 OR 337932490704560130 OR 337932489144270848 OR 337932488762601472 OR 337932492097069056 OR 337932497780355072 OR 337932498900230144 OR 337932499722321921 OR 337932514431729665或337932561806409731 OR 337932567300935680 OR 3379325743003214848 OR 337932571134533632 OR 337932574674518016 OR 337932575484026881 OR 337932578206121984 OR 337932582215892994 OR 337932586653454336 OR 337932584917024768 OR 337932592986865664 OR 337932597017587712 ....

我打算根据几个领域来面对结果。

2 个答案:

答案 0 :(得分:0)

我不确定这个解决方案是否对您有所帮助,但是为您的问题尝试了一些方法。

无论您向Solr提供什么查询,首先它会将该查询解析为可理解的格式。然后Solr执行结果。 在查询Solr 之前,您必须先进行一些计算。让我们采用以下场景来解决您的用例。

假设您总共有5000 tweet_id 。您必须在大约4000个tweet_id上执行 OR 查询。在这种情况下,最好使用否定 AND 查询查询其他(5000-4000 = 1000)1000 tweet_id。因此,您的查询将传递更少的值。

因此,尝试使用否定AND查询而不是OR查询来查询tweet_id的其余部分。

答案 1 :(得分:0)

如果我是你,我会创建一个表示此custom_list_id的新字段。每当您生成新列表时,请将新数据编入索引,然后按列表查询我