全文搜索具有多个模式的关系数据库

时间:2017-06-06 20:02:46

标签: elasticsearch solr full-text-search

警告: Solr新手在这里

我有一个包含多个模式的PostgreSQL数据库。每个模式包含几个表。这些模式通常在表格数量上有所不同,表格也没有多少共同之处。

关于尺寸调整:

  • 总的来说,我会有几十个到几百个模式
  • 每个架构可能包含~10个表
  • 每个表包含数万行X几百列

我希望跨数据库模式对数据进行全文搜索。因此,我希望能够识别与搜索词匹配的架构

到目前为止,我自己想到的是几个SOLR选项(我很乐意提供有关ES解决方案的建议):

1。创建一个多核,其中每个核心代表数据库模式中的表

这将很好地重用数据库架构,但我最终会有数千个核心,我相信这些核心是误用的。

2。将索引展平,以便涵盖所有可能的值

我在考虑超级通用的Solr架构,它基本上导航到表格中的单个单元格。类似于:

<fields>
  <field name="schema" ... /> 
  <field name="table" ... />
  <field name="column"  ... />
  <field name="row" ... />
  <field name="value"  ... />
</fields>

在这种情况下,我觉得我可能会误用整个概念,因为必须是某种通用类型(String?),它已经闻起来了:)

此外,还需要编写ID,但我理解should be possible

对该问题或建议的任何见解都将非常感谢。

1 个答案:

答案 0 :(得分:1)

回复:

  

@jeorfevre:我的想法是我会搜索一个单词(比如“耶路撒冷”)并且响应需要导航我到模式 - &gt;表 - &gt;该术语存在的列。能够识别偶数行是一个加号,但不是严格要求。

我建议您使用单词索引而不是行/行全文。

<fields>
  <field name="schema" ... /> 
  <field name="table" ... />
  <field name="column"  ... />
  <field name="row" ... />
  <field name="myword"  ... />
</fields>

这比在solr中的X行上的全文搜索要好得多。全文是solr中最慢的选项。这种搜索是最好的选择。

您输入“耶路撒冷”,它将返回与之匹配的所有结果。 你对那个怎么想的。比全文搜索更好,这将直接击中一个单词。