【问题标题】:Questions about SOLR documents and some more关于 SOLR 文档的问题等等
【发布时间】:2010-01-19 17:37:56
【问题描述】:

网站:分类网站(用户可以投放广告、搜索广告等)

我打算使用 SOLR 进行搜索,然后只返回 ID 为 nr:s 的结果,然后使用那些 ID nr:s 并查询 mysql,最后显示带有这些 ID:s 的结果。

目前我在 MySQL 中有大约 30 个表,每个类别一个。

1- 你认为我应该采取与上述不同的方式吗?

2- 我应该只使用一个 SOLR 文档还是多个文档?还有,文档和SOLR索引一样吗?

3- 知道我在每个表中有很多列,只使用 SOLR 并跳过 MySQL 会更好吗?就我个人而言,我在使用 MySQL 方面比 SOLR 好得多。

4- 假设用户想要搜索特定地区的汽车,这种类型的查询是如何在 SOLR 中执行/完成的?例如:q=cars&region=washington 可能吗?

你可能认为那里有很多关于 SOLR 的信息,但实际上并没有,尤其是关于将 PHP 与 SOLR 和 SOLR php 客户端一起使用的信息……也许当我了解了所有这些后,我会写一些东西。 .. 或者也许你们中的一个人可以写点什么!

再次感谢大家的帮助...

【问题讨论】:

    标签: java mysql database search solr


    【解决方案1】:

    首先,定义:Solr/Lucene 文档大致相当于数据库行。索引与数据库表大致相同。

    我建议尝试将所有与分类相关的信息存储在 Solr 中。查询 Solr,然后查询数据库效率低下,很可能没有必要。

    假设您在 Solr 中有 region 字段,则在特定区域中查询类似于 q=cars+region:washington

    Solr wiki 有大量有用的信息和pretty good basic tutorial。当然,这总是可以改进的,所以如果您发现任何不清楚的地方,请让 Solr 团队知道。

    由于我不使用 PHP,所以无法评论 PHP 客户端。

    【讨论】:

      【解决方案2】:

      Solr 将以使用 SimpleXml 易于解析的语法返回结果。您还可以使用 SolPHP 客户端库:http://wiki.apache.org/solr/SolPHP

      Solr 确实非常高效。我建议将尽可能多的数据放入 Solr 索引中,以便从 Solr 一次性检索所有内容。这可能意味着您的数据库流量要少得多。

      如果您已安装示例 Solr 应用程序(Jetty 随附),则可以使用管理界面开发 Solr 查询。结果的 URI 几乎就是您在 PHP 中构建的内容。

      开始使用 Solr 时最困难的部分是正确获取 solrconfig.xml 和 schema.xml 文件。我建议从一个非常基本的配置开始,并在每次添加字段时重新启动您的 Web 应用程序。从整个 schema.xml 开始可能会令人困惑。

      【讨论】:

        【解决方案3】:

        2- 我应该只使用一个 SOLR 文档还是多个文档?此外,是否记录 和 SOLR 索引一样吗?

        3- 只使用 SOLR 并跳过 MySQL 会更好吗? 每个表中的列?就我个人而言,我在使用 MySQL 方面比 SOLR 好得多。

        文档是 solr 索引的“实例”。考虑到每个 solr Core 只能构建一个 solr 索引。一个核心作为一个独立的 solr 服务器进入同一个 solr 安装。

        http://wiki.apache.org/solr/CoreAdmin

        你可以建立一个索引合并一些表内容和一些其他索引来执行二级搜索...

        您能否提供有关您的架构和数据的更多详细信息?

        【讨论】:

        • 文档不是 Solr索引的实例。
        【解决方案4】:

        按照其他人的建议,您可以存储和索引您的 mysql 数据,并可以在 solr 索引中运行查询,从而无需使用 mysql。 您不需要只存储和索引 id 并查询和获取 id,然后运行 ​​mysql 查询以获取针对该 id 的其他数据。您可以将与 ids 对应的其他数据存储在 solr 本身中。

        关于 solr PHP 客户端,则不需要使用,建议直接使用 REST,如 Solr Web API。你可以使用像file_get_contents("http://IP:port/solr/#/core/select?q=query&start=0&rows=100&wt=json") 这样的PHP 函数,或者如果你需要的话,可以在PHP 中使用curl。两种方式几乎相同且有效。这会将 json 中的数据返回为 wt=json。然后使用 PHP 函数json_decode($returned_data) 获取对象中的数据。

        如果您需要询问任何内容,请回复。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-13
          • 2016-04-09
          • 1970-01-01
          • 2013-02-01
          • 2020-04-25
          相关资源
          最近更新 更多