【问题标题】:SolrNet Newbie - How to handle multiple Where ClausesSolrNet 新手 - 如何处理多个 Where 子句
【发布时间】:2011-06-14 17:05:39
【问题描述】:

我刚刚开始探索 SolrNet。以前我一直在使用 MSSQL FULL TEXT。

在 sql server 中,我的查询进行全文搜索,并且还有多个连接和 Where 子句。我还使用自定义分页仅返回数百万行中的 10 行。

我已经阅读了一些 solrNet 文档并运行了博客上提供的示例应用程序。到目前为止一切都运作良好。只需要了解一下,我该怎么处理 JOINS 和 WHERE 子句??

例如如果用户搜索 Samsung,db 会返回 100k 条记录,但如果用户搜索 Samsung && City='New york' && Price >'500',那么他只会得到几千条记录。

  • 我是否在 Solr 中添加所有列并在 Solr 中编写 WHERE 子句?
  • 我该如何处理 SQL JOINS?

提前致谢!

【问题讨论】:

    标签: sql-server solr solrnet full-text-search


    【解决方案1】:

    Solr 中没有连接。来自Solr wiki

    Solr 提供一张表。存储一套 索引中的数据库表通常 需要非规范化一些 表。试图避免 非规范化通常会失败。

    关于 WHERE 子句(即过滤),请参阅 Querying in SolrNetSolr query syntaxCommon Solr query parameters

    【讨论】:

    • 感谢毛里西奥的提示。
    • 只是几个问题,如果你能用你的 SolrNet 经验指导我。 1)如果我在查询中有近 5 个过滤器,它会减慢 Solr 中的全文搜索多少。其次,我在我的 MS SQL 数据库中实现了邻近搜索,它通过纬度和经度制定最近的位置 ID。 Wat 是使用 Solr 完成此任务的最佳方式。即我是否应该在向 Solr 发送查询之前制定最近的位置名称。然后在 Solr 中使用一些东西(相当于 SQL IN 运算符)来匹配所有这些位置名称?
    • @Peter:1. 取决于这些过滤器是什么,但典型的过滤器并不明显。 2.见wiki.apache.org/solr/SpatialSearch
    • 非常感谢你,我的朋友!真的很有帮助。
    • 如果可能的话,只需要另一个性能提示...我将在 Solr 中存储每个文档的标题和描述。描述通常为 256 个字符长,但最多可达到 1024 个字符。我有 2 到 4 百万行这样的行,但仍然想要超快的结果。这会是性能问题还是我应该只存储标题而不是描述?如果我可以搜索描述以获得更相关的结果会更有用。
    【解决方案2】:

    您的 where 子句的 Solr 等效项是将您的列映射到字段并根据查询语法运行查询。像您的示例这样的查询:

     Samsung && City='New york' && Price >'500' 
    

    在 Solr 中可以翻译成这样的东西:

     q=Samsung AND city:"new york" AND price:[500 TO *]
    

    在将数据库映射到 Solr 架构时需要小心,特别是您可能需要对数据进行非规范化处理。请参阅this page on the Solr wiki 了解更多信息。基本上,你不能在 Solr 中真正做复杂的 JOIN。这是一个“平面”索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 2023-01-05
      • 1970-01-01
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      • 2021-02-04
      相关资源
      最近更新 更多