在 MySQL 数据库中使用 JOIN 查询导入数据并导入
是的,这在使用 DIH 的 solr 中是可以实现的。使用 DIH,您必须配置您的 data-config.xml。在这里,您可以使用连接来编写查询,该连接将从所有所需的表中获取数据。在这里您可以创建一个单核,并且可以在单核中拥有所有数据。您可以使用这些字段创建文档。(文档字段将在 schema.xml 中提及)。
此处要考虑的优化点将是您要搜索并希望在结果中显示的所有字段。所以你需要先解决这个问题。您将搜索并需要显示的字段。
您需要搜索的字段使它们成为 indexed="true"。其余全部设为 indexed="false"。结果中需要的字段将它们标记为stored="true"。将所有内容都设置为已存储 =“false”。
有些可能同时需要,例如搜索和结果显示。将它们标记为 indexed="true" 和 stored="true"。
例如,我的文档中有 15 个字段,但只有 4 个被索引,因为我只想搜索这些字段。其余所有字段都显示在结果中,以便存储。
现在来回答你的第二个问题
通过导入完整数据单独的表来加入 solr 核心。是的,这在 solr 中是可能的,因为 solr 4.0
有关详细示例,请查看以下链接
https://wiki.apache.org/solr/Join
但也要考虑它的局限性。
正在“从”连接的文档的字段或其他属性不可用于处理“到”文档的结果集(即:您不能将“来自”文档中的字段作为多值字段返回“to”文件)。
因此,您可以在最后决定之前考虑这些要点。
考虑这里你有两个核心
core brands with fields {id,name}
core products with fields{id, name, brand_id}
data in core BRANDS: {1, Apple}, {2, Samsung}, {3, HTC}
data in core PRODUCTS: {1, iPhone, 1}, {2, iPad, 1}, {3, Galaxy S3, 2}, {4, Galaxy Note, 2}, {5, One X, 3}
你会建立你的查询,如:
http://example.com:8999/solr/brands/select?q=*:*&fq={!join from=brand_id to=id fromIndex=products}name:iPad
and the Result will be: {id: "1", name:"Apple"}
在 DistributedSearch 环境中,您不能跨多个节点上的核心加入。但是,如果您有自定义分片方法,则可以在同一节点上跨核心加入。
Join 查询为所有匹配的文档生成恒定分数——由嵌套查询为“from”文档计算的分数不可用于对“to”文档进行评分。
考虑到以上几点,我希望您可以决定要采用哪种方法。