使用mysql搜索最新数据,使用solr全文搜索旧数据

时间:2012-05-03 23:26:07

标签: php mysql solr

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

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

我的网络应用程序在mysql中保存数据,但我希望该用户可以对该数据进行全文搜索。我可以运行4次从msql到lucene solr的数据导入数据,但是如果mysql上的数据由用户更改并且solr尚未开始导入和索引数据,则用户应该能够在任何情况下搜索并查看最近的修改过的数据。

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

是否可以向solr ftom php发送修改命令以获取用户更改的更新数据,但确保仅在mysql上提交solr数据  事务干得好,所以最后我提交了mysql中的数据并在lucene中提交数据,如果Web应用程序回滚出现问题,就像在mysql中一样,在solr中?

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

你可能遇到一些不一致的搜索结果,你的一些点击来自MySql,一些来自Solr。

考虑一下:

  1. 在MySQL中进行所有全文搜索
  2. 在Solr中进行所有全文搜索
  3. 实施Solr意味着保持数据在MySQL-> Solr和其他基础设施之间保持同步。

    通过使用MySQL的FULLTEXT索引和MATCH() AGAINST()查询子句,查看是否可以执行所需操作。它将使您的应用程序更加简单。

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