假設我有一個名爲DB的MySQL數據庫和一個名爲ContactInfo的表。下面是它的結構和一些示例數據(僅一個項目):從數據庫中進行全文搜索
表----的ContactInfo:
----------------------------------------------------------- name fullname phone ----------------------------------------------------------- NASA National Aeronautics and Space Administration 00000 -----------------------------------------------------------
現在我想搜索的表下的數據「 ContactInfo「使用以下方式:
1)無論我輸入」NASA「或」國家航空航天局「或電話號碼,都應該將右邊的行我。 2)當我進入「國家航空局」或「國家航天局」或「美國航空航天局」或「美國航空航天局」時,它們在數據庫中並不完全匹配,但第一行應該是由於第一行中的內容與請求的字符串相關,因此返回給我。
方式二可以被看作是隱蔽的搜索。
我已經考慮過使用諸如「Hpyer estraier」和「Lucene」之類的「全部上下文搜索」。不過,我發現我的要求不同或多或少。
使用「Hyper estraier」或「Lucene」時,首先根據解析的純文本創建索引。然後開始搜索。
那麼這是否意味着我應該將數據庫中的數據更改爲多個純文本文件(表中的每個記錄爲單個文件),然後根據這些文件構建索引?
順便說一句,我剛剛發現MySQL支持全文搜索,但是我們必須處理一些中文字符,但似乎mysql確實支持中文字符全文搜索。
那麼,任何人都可以給我一個建議?
似乎sphinx只支持php,但我們的應用程序是在java.and下構建的,而我發現另一個sphinx-4,有什麼不同? – hguser 2010-09-09 11:06:09
Java不需要在sphinx支持中構建。您可以使用SphinxSE'SE =存儲引擎http://sphinxsearch.com/docs/current.html#sphinxse-using或SphinxQL http://sphinxsearch.com/docs/current.html#sphinxql這是一個守護程序一個真正的MySQL服務器,讓我們來執行查詢。兩種方法都要求sphinx守護進程啓動並運行。 SphinxQL更容易設置,因爲SphinxSE要求您使用sphinx支持重新編譯MySQL,但SphinxSE更方便查詢,因爲您可以從sphinx搜索中查詢product_id,並且可以一步直接加入產品表。 – 2010-09-09 14:33:25