如何使用solr索引关系数据库?

时间:2011-10-09 15:10:50

标签: asp.net asp.net-mvc-3 solr solrnet

正如我在编写ASP MVC3多语言网站前几天在我的帖子中解释的那样,该网站应该包含分面搜索,全文搜索和远程搜索。要意识到我已经在Tomcat 7上安装了solr 3.3。我还成功地集成了一个dataimporthandler。

现在我想索引关系ms sql数据库中的数据。我读取索引结构看起来像一个包含一个对象的所有数据的表。这意味着如果我有一个像汽车这样的物体,我的架构会占据像品牌,颜色等字段。

  1. 但是n-m的实际情况呢?索引“table”是否为每个关系都有一列?
  2. 那么多语言项呢?我应该在每种语言的索引中创建一个对象/行吗?
  3. 我应该只保存索引中的对象ID还是全名?
  4. 最后如何在数据库图像上索引(查询)一个Object? (我读过有关动态字段和多值字段的内容,但我不确定它是否是我问题的解决方案)
  5. 我有一个我正在谈论的数据库设计的例子。

    感谢所有答案!!!

    enter image description here

    更新: 人们应该能够有不同的搜索方式。 他们应该有可能通过全文搜索来搜索tbl_text_local.text,其他的是facettes。 结果应该是与搜索匹配的对象列表和构面列表。

    但是我应该如何索引Miscellaneous?是否有可能以这样的形式索引它们:

    <cattegory name = "cat1">
    
    <Miscellaneous>
    name...
    </Miscellaneous>
    
    <Miscellaneous>
    ...
    </Miscellaneous>
    
    <Miscellaneous>
    ...
    </Miscellaneous>
    
    </cattegory>
    
    
    <cattegory name = "cat2">
    
    <Miscellaneous>
    </Miscellaneous>
    
    <Miscellaneous>
    </Miscellaneous>
    
    <Miscellaneous>
    </Miscellaneous>
    
    </cattegory>
    

    人们应该有一个类似的搜索字段:

    文字输入(搜索文字)

    Facettes:

    其它-Cattegory1

    • 杂项1(9)
    • 杂项2(39)
    • 其他3(49)

    其它-Cattegory2

    • 其他5(59)
    • 其他6(69)

    其它-Cattegory3

    • 杂项7(7)
    • 杂项8(8)

    其它-Cattegory4

    • 杂项9(19)

1 个答案:

答案 0 :(得分:2)

在Solr中没有单一,“最佳”的方式来建模关系。与通过跟随normalization设计表的关系数据库不同,在Solr中,模式设计非常特殊,是您将对索引执行的搜索的函数。问自己这些问题作为指导:

  • 用户搜索 的内容是什么?什么是“结果类型”?架构应围绕此设计。
  • 我需要了解哪些信息?
  • 我需要在全文搜索中包含哪些信息?
  • 我需要使用哪些信息对结果进行排序?
  • 我将通过搜索的哪些信息?即我将使用哪些信息来过滤搜索结果,以及如何使用该信息?
  • 我将在索引时处理什么以及在查询时处理什么?

最后,不要害怕在索引中复制数据以用于特定搜索目的。