2012-05-03 76 views
0

我在php和mysql中構建一個web應用程序。我想搜索數據在3-4表上進行全文搜索。我正在考慮爲它lucene索爾項目。用mysql搜索最近的數據,用solr全文搜索舊數據

我的問題是: 將今天的數據保存在單獨的mysql表中是否正確,然後它僅爲今天的數據做一個簡單的搜索,如果它找到enything,它會嘗試在lucene上查詢全文搜索,數據(從昨天到過去)?

我的web應用程序將數據保存在mysql中,但我希望該用戶可以對該數據進行全文搜索。我可以運行4次從msql導入數據到lucene solr的作業,但如果mysql上的數據更改由用戶和solr尚未開始導入和索引數據,則用戶應該能夠在任何情況下搜索並查看最近修改的數據。

集成lucene solr與mysql和php的最佳方法是什麼?

是否有可能發送一個修改命令solr ftom php更新數據,用戶更改,但一定要提交數據solr只有當一個mysql 事務進行得很好,所以最後我已提交數據在mysql和提交的數據在lucene中,如果web應用程序回滾所有在mysql中的問題和solr一樣?

+0

請考慮編輯您的問題,以包括有關您的項目預期範圍的詳細信息。現在表中有多少行?每天多少次。你想在Solr/Lucene中存儲多少歷史記錄?我的感覺是,mysql是一個非常有效的存儲數據(和查詢)的工程解決方案,您必須使用列數據的類型化數據,數據必須清理乾淨等等。搜索引擎首先設計用於數據的通用性,第二用於搜索速度,第三用於高效使用磁盤和RAM(與數據庫相比)。做很多研究!祝你好運。 – shellter

回答

0

如果你正在考慮實現Lucene,表的數量並不重要。根據最佳方法,我會說實施Zend的Zend Search Lucene

Zend Search Lucene這樣的lucene庫有自己的標記數據和搜索數據的機制。他們基本上從數據庫中獲取數據,從這些數據中構建搜索文件並分別存儲它們,如果出現問題,那麼只需重建搜索

關於在數據庫更新時更新Lucene數據的可能性,完全依賴於您實現的解決方案。另一方面,Zend Search Lucene,可以做到。

+0

我想對存儲在mysql中的數據進行全文搜索,但我不知道如何保持與apache solr同步。我讀alt讀取zend_lucene它很慢,使用apache solr更有利可圖。 – paganotti

+0

@paganotti,Apache的很好,但Zend的Lucene並不慢,從我過去的經驗。 – Starx

+0

好的謝謝。我應該使用zend lucene。 – paganotti

0

您可能會遇到不一致的搜索結果,其中一些命中來自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