gpt4 book ai didi

mysql - 如何将连接的 MySql 数据转换为 Solr 索引

转载 作者:行者123 更新时间:2023-11-29 07:33:28 24 4
gpt4 key购买 nike

我有一个包含三个表的 MySql 数据库:人员、地址和联系信息。 person 表是主表,与其他两个表具有一对多关系。

据我所知,在 Solr 中构建数据时的主要问题是:我需要回答哪些问题?我希望能够通过地址和联系信息搜索人员。

我的问题是这样的:

当我想使用 Solr 搜索数据时,像这样的示例中的最佳实践是什么?MySql 查询会是什么样子?我看到以下解决方案:

  • 创建一个巨大的查询,在一个字段中一次性连接和连接所有信息

  • 为每种信息创建不同的索引(核心?),并通过主键连接

  • 一次从数据库获取数据,并在每种类型的数据行中重复使用人员主键(人员、按人员 ID 列出的人员地址以及按人员 ID 列出的人员联系信息)

  • 获取人员表数据,并将相关数据放入嵌套文档中(尽管我不知道应该如何完成)

最佳答案

在初始阶段构建一个巨大的字符串是可以的,但是在稍后的时间点,由于巨大的字符串产生的噪音,您将不得不切换到下面提到的选项二。

您应该准备一个 SOLR 文档,其中包含要搜索人员的所有可能字段。

因此某些字段(例如地址)应该是多值字段,以便您可以为 SOLR 文档存储多个地址

<add>
<doc>
<field name="id">Person 1</field>
<field name="address">addr1</field>
<field name="address">addr2</field>
</doc>
</add>

准备好文档后,要求在所有字段中进行搜索。这可以通过两种方式实现

  1. 定义一个复制字段(如 all_text),该字段从人员的所有字段(如地址、姓名等)复制值,并将其用作搜索处理程序中的默认值,如下所示

    <requestHandler name="/query" class="solr.SearchHandler">
    <lst name="defaults">
    <str name="qf">all_text</str>
    </lst>
    </requestHandler>
  2. 使用特定字段定义请求处理程序默认值。在这里,您甚至可以实现某些字段的提升,例如名称相对于地址的排名。

    <requestHandler name="/query" class="solr.SearchHandler">
    <lst name="defaults">
    <str name="qf">name^5 address^2</str>
    </lst>
    </requestHandler>

关于mysql - 如何将连接的 MySql 数据转换为 Solr 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31784520/

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