gpt4 book ai didi

java - Solr 一次数百万个搜索查询

转载 作者:行者123 更新时间:2023-12-02 02:01:26 25 4
gpt4 key购买 nike

我必须在引用地址(PostGreSQL 数据库中大约有 3000 万个)和包含其他地址的文件(每月许多文件,每个文件包含数百万个地址)之间进行配对。

我已经设法在 SolR 中导入引用地址,并且搜索引擎非常棒。有没有一种方法可以创建一个处理程序或插件,可以非常快速地对文件的每一行进行配对?

我无法使用 REST API 在 SolR 上执行数百万个 http 请求,那太慢了。我只想得到“id 配对”的结果,例如,如果文件“somefile.csv”的 ID 17 地址与引用地址的 IDS 36、452 和 13456 匹配,这就是我需要检索的全部内容,我可以询问稍后将详细介绍数据库。

我想用 Java 来实现,但也可以使用任何其他语言。

最佳答案

创建两个集合 - 一个是您已有的,其中包含您要匹配的地址。第二个集合应包含您要用于查找地址的 CSV 文件的内容 - 您可以 upload the CSV file directly as documents在 Solr 中。

设置两个集合及其相应的文件后,使用 Streaming Expressions support在 Solr 中在两个集合之间编写一个 leftOuterJoin (如果您想要其他行为,则可以编写不同的联接)。这样您就可以从上传的文件中获取所有条目,并使用匹配地址 ID 的原始 ID 进行丰富。

给定两个集合addresses(包含原始地址)和uploaded_file(包含上传的CSV行),连接表达式可以写为:

leftOuterJoin(
search(uploaded_file, q=*:*, fl="id,address", sort="address asc"),
select(
search(addresses, q=*:*, fl="id,address", sort="address asc"),
address AS original_address,
id AS original_id
),
on="address=original_address"
)

使用您 Collection 的管理页面上的“流”部分将允许您尝试表达式。

使用以下测试文档和集合,结果如下:

地址中的文档:

  {
"id":"add1",
"address":"foo st. 33",
"_version_":1606950875589246976},
{
"id":"add2",
"address":"foo st. 49",
"_version_":1606950875591344128},
{
"id":"add3",
"address":"bar lane 1",
"_version_":1606950875591344129},
{
"id":"add1-duplicate",
"address":"foo st. 33",
"_version_":1606951820879462400}

uploaded_file中的文档:

  {
"id":"up1",
"address":"foo st. 33",
"_version_":1606950921604956160},
{
"id":"up2",
"address":"foo st. 72",
"_version_":1606950921607053312},
{
"id":"up3",
"address":"bar lane 1",
"_version_":1606950921607053313}

运行表达式给我们:

"docs": [
{
"original_address": "bar lane 1",
"address": "bar lane 1",
"id": "up3",
"original_id": "add3"
},
{
"original_address": "foo st. 33",
"address": "foo st. 33",
"id": "up1",
"original_id": "add1"
},
{
"original_address": "foo st. 33",
"address": "foo st. 33",
"id": "up1",
"original_id": "add1-duplicate"
},
{
"address": "foo st. 72",
"id": "up2"
},
{
"EOF": true,
"RESPONSE_TIME": 28
}
]

这将为您提供与上传的一个文档匹配的地址,以及与任何内容都不匹配的地址(其中缺少 original_id)。

关于java - Solr 一次数百万个搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51513354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com