【问题标题】:Search recent data with mysql, Full text search old data with solr用mysql搜索最近的数据,用solr全文搜索旧数据
【发布时间】:2023-03-05 21:39:02
【问题描述】:

我在 php 和 mysql 中构建了一个 Web 应用程序。我想搜索对 3-4 表进行全文搜索的数据。我正在考虑 lucene solr 项目。

我的问题是: 将今天的数据保存在单独的 mysql 表中是否正确,然后它只对今天的数据进行简单搜索,如果找到任何内容,它会尝试在 lucene 上查询全文搜索但在旧数据(从昨天到过去)中查询?

我的网络应用程序将数据保存在 mysql 中,但我希望该用户可以对该数据进行全文搜索。我可以每天运行 4 次将数据从 msql 导入到 lucene solr 的工作,但是如果用户更改了 mysql 上的数据并且 solr 还没有开始导入和索引数据,那么用户无论如何都应该能够搜索和查看最近的修改数据。

将 lucene solr 与 mysql 和 php 集成的最佳方法是什么?

是否可以向 solr ftom php 发送修改命令以更新用户更改的数据,但确保仅在 mysql 时才在 solr 上提交数据 事务顺利完成,所以最后我已经在 mysql 中提交数据并在 lucene 中提交数据,如果 Web 应用程序回滚出现问题,就像在 mysql 和 solr 中一样?

【问题讨论】:

  • 请考虑编辑您的问题以包含有关您对该项目的预期范围的详细信息。现在您的表中有多少行?每天多少。你想在 Solr/Lucene 中存储多少历史?我的感觉是 mysql 是一种工程解决方案,可以非常有效地存储数据(和查询),但必须权衡您必须为列定义使用类型化数据、数据必须干净输入等。搜索引擎首先是为了通用性而设计的数据,搜索速度排名第二,磁盘和 RAM 的有效使用排名第三(与 DB 相比)。做很多研究!祝你好运。

标签: php mysql solr


【解决方案1】:

如果您正在考虑实现 Lucene,表的数量无关紧要。至于最好的方法,我会说实现 Zend 的Zend Search Lucene

Zend Search Lucene 这样的 lucene 库有自己的数据标记和搜索机制。他们基本上从数据库中获取数据,从中构建搜索文件并单独存储它们,如果出现问题,则只需重新构建搜索

关于在数据库更新时更新 Lucene 数据的可能性,完全取决于您实施的解决方案。 Zend Search Lucene另一方面,可以做到。

【讨论】:

  • 我想对存储在 mysql 中的数据进行全文搜索,但我不知道如何使其与 apache solr 保持同步。我还读到 zend_lucene 它很慢,使用起来更有利可图apache solr。
  • @paganotti,Apache 的不错,但是 Zend 的 Lucene 并不慢,从我过去的经验来看。
【解决方案2】:

您可能会遇到不一致的搜索结果,其中一些点击来自 MySql,而另一些来自 Solr。

想一想:

  1. 在 MySQL 中进行所有全文搜索
  2. 在 Solr 中进行所有全文搜索

实施 Solr 意味着在 MySQL->Solr 和其他基础设施之间保持数据同步。

看看你是否可以通过使用 MySQL 的 FULLTEXT 索引和 MATCH() AGAINST() 查询子句来做你需要的事情。这将使您的应用程序更加简单。

http://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html

【讨论】:

    猜你喜欢
    • 2012-01-25
    • 2020-01-06
    • 1970-01-01
    • 2014-01-08
    • 2016-04-30
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 2011-12-20
    相关资源
    最近更新 更多