elasticsearch - 在具有多个模式的关系数据库上进行全文搜索

标签 elasticsearch solr full-text-search

警告: Solr新手在这里

我有一个具有多个架构的PostgreSQL数据库。每个模式包含几个表。模式通常在表计数方面有所不同,并且表也不一定有太多共同之处。

关于尺寸:

  • 总共我将有几十个到数百个模式
  • 每个架构可能包含约10个表
  • 每个表包含数万行X几百列

  • 我想在整个数据库模式的数据中进行全文搜索。结果,我希望能够识别与搜索词匹配的架构,表和列。

    到目前为止,我自己一直在考虑的SOLR选项很少(我也很乐意提供有关ES解决方案的建议):

    1.创建一个多核,其中每个核代表数据库架构中的表

    这将很好地重用数据库模式,但最终我将拥有数千个我认为滥用的内核。

    2.整理索引,使其涵盖所有可能的值

    我在考虑 super 通用的Solr模式,该模式基本上可以导航到表中的单个单元格。类似于:
    <fields>
      <field name="schema" ... /> 
      <field name="table" ... />
      <field name="column"  ... />
      <field name="row" ... />
      <field name="value"  ... />
    </fields>
    

    在这种情况下,我觉得我可能会误用整个概念,因为值必须是某种通用类型(字符串?),它已经散发出来了:)

    此外,还需要组成ID,但是我了解should be possible

    对于问题或建议的任何见解,将重点关注文档的哪一部分。

    最佳答案

    随着回应:

    @jeorfevre: the idea is I'll search for a word (like "Jerusalem") and the response needs to navigate me to the schema -> table -> column where this term exists. Being able to identify even row is a plus but not strictly required.



    我建议您使用单词索引而不是行/行全文。
    <fields>
      <field name="schema" ... /> 
      <field name="table" ... />
      <field name="column"  ... />
      <field name="row" ... />
      <field name="myword"  ... />
    </fields>
    

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

    您键入“耶路撒冷”,它将返回所有匹配的结果。
    你对那个怎么想的。比fulltextsearch好,它只会直接打1个单词。

    关于elasticsearch - 在具有多个模式的关系数据库上进行全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44398865/

    相关文章:

    python - Haystack-Django 模板不存在于/search/Error

    performance - Elasticsearch索引设计

    solr - 跨多个 Solr 4.6 内核共享模式和配置

    solr - Tomcat6升级到Tomcat8后报错: Could not load config for solrconfig. xml

    mysql - 全文搜索不适用于数字

    elasticsearch - 如何知道 Elasticsearch 集群中的总节点数?

    elasticsearch - Elasticsearch 错误-[前缀]查询不支持[前缀]

    Sql Server 2008 R2全文搜索理解两个单词并获得更好的排名

    html - xslt disable-output-escaping 将非拉丁字符变成问号 "...???????????..."

    mysql - 全文搜索不排除-xxxword