我刚开始学习 Solr,我学习它的原因是因为我想做高级搜索查询(在 SQL 中被认为很简单),但需要处理大量数据。从我读到现在的内容(使用日光浴室),我可以索引、更新、选择和删除,但只能针对一种数据(关系/表)。我想做的是能够在表之间执行操作(就像 SQL 会以他自己的方式)。这是我可以处理的示例场景。
以下是基于上述关系的数据样本。
<root>
<!-- ID for Solr --->
<id>some_id</id>
<table>house</table>
<house_id>1</house_id>
<house_name>Gryffindor</house_name>
</root>
<root>
<!-- ID for Solr --->
<id>some_other_id</id>
<table>student</table>
<student_id>1</student_id>
<firstname>Albus</firstname>
<lastname>Dumbledore</lastname>
<house_id>1</house_id>
</root>
<root>
<!-- ID for Solr --->
<id>some_different_id</id>
<table>battle</table>
<student_id_1>1</student_id_1>
<student_id_2>3</student_id_2>
</root>
一个示例搜索查询将是“来自不同学院的互相打架的学生的全名以及他们各自学院的名称。
在 SQL 中,我会执行以下操作:
SELECT * FROM houses housA, students studA, houses housB, students studB, battles
WHERE studA.id_house == housA.house_name AND studB.id_house == housB.house_name AND
((studA.id == battles.id_1 AND studB.id == battles.id_2) OR (studA.id == battles.id_2 AND studB.id == battles.id_1));
解决方案将是 Dumbledore vs Snape 和 Potter vs Who 的每个字段(所有三个表)。
可以用 Solr 完成吗?