2012-04-10 67 views
-1

對於我來說,用於在不同的表格中搜索搜索引擎的用途是什麼?在不同的表格中創建搜索引擎

每個表是不同的,列是不同的,行數是不同的。

+0

您是否嘗試過[Solr的(http://lucene.apache.org/solr/)?根據您的要求,它可能是一個不錯的選擇 – Anirudh 2012-04-10 06:56:23

回答

0

在相應的表上創建觸發器以將來自不同表的內容提取到單個表中。在該表上應用全文搜索索引。

0

創建你的函數,它將採用列名和表名的動態輸入。爲了搜索目的,您必須知道哪個列與哪個表相關,然後始終將這2個參數1)table_name 2)column_names數組傳遞給它。創建sql查詢條件,這些參數將適合和查詢將動態開發。然後查詢將返回結果。

0

請確保您在這種情況下考慮了FULL-TEXT索引機制。 FULL-TEXT索引支持MyISAMENGINE類型。

Full-text使用MATCH()... AGAINST語法執行搜索。 MATCH()採用逗號分隔的列表來命名要搜索的列。 AGAINST接受一個字符串進行搜索,還有一個可選的修飾符指示要執行的搜索類型。搜索字符串必須是文字字符串,而不是變量或列名稱。有三種類型的全文搜索:

  • 自然語言搜索解釋搜索字符串作爲 自然人類語言(自由文本短語)的短語。沒有特殊的 運營商。停用詞列表適用。另外,存在於50%或更多行中的 的單詞被認爲是通用的並且不匹配 。

    如果給出IN NATURAL LANGUAGE MODE修飾符或者沒有給出修飾符,則全文搜索是自然語言搜索。

  • 布爾搜索使用特殊查詢語言的規則解釋搜索字符串。該字符串包含要搜索的單詞。 它也可以包含指定要求的操作符,以使匹配行中必須存在或不存在 字,或者應該是 加權得高於或低於平常。如「some」或 「then」的常用詞是停用詞,並且如果在搜索 字符串中存在,則不匹配。 IN BOOLEAN MODE修飾符指定布爾搜索。有關 的更多信息,請參見第12.9.2節「布爾全文搜索」。

  • 查詢擴展搜索是對自然語言搜索的修改。搜索字符串用於執行自然語言 搜索。然後將搜索 返回的最相關行中的單詞添加到搜索字符串中,然後再次執行搜索。 查詢返回第二個搜索的行。

欲瞭解更多信息,請參閱本:

http://devzone.zend.com/26/using-mysql-full-text-searching/

http://www.iamcal.com/publish/articles/php/search/