簡體   English   中英

mysql全文搜索混亂

[英]Confusion on mysql full text search

我在使用MySQL全文時有點困惑。 我的數據庫的字符集設置為utf-8 ,排序規則設置為utf8_unicode_ci

我有以下搜索產品的流程。 用戶從以下流程中選擇以搜索任何產品

  • 用戶選擇product_type,枚舉字段,其值可消耗/不可消耗。
  • 然后選擇product_nature,枚舉0 =>完成1-未完成。
  • 然后用戶選擇位置,varchar用戶可以選擇多個位置。
  • 然后用戶指定價格范圍,以此類推(大約還有5個選擇)。在搜索頁面中,用戶唯一輸入的信息是位置,價格范圍。 休息所有他們從組合選擇。

我的困惑是。

  1. 我的數據庫是否支持全文搜索?
  2. 我需要索引哪些字段以啟用全文本搜索。
  3. 由於全文僅在varchartext數據類型字段中受支持。 如何獲得相關的結果,如果許多領域用戶選擇的過濾器是在enum
  4. 我想顯示出完全匹配的產品,而最接近匹配的產品則取決於用戶選擇的過濾器,如我上述。 在這里按全文相關性排序是否起作用,因為存在許多enum類型的字段。

編輯例如以更好地理解

此搜索針對的是那些特別知道什么東西但不知道其他東西的人。 就像我需要移動電話一樣,但是我什么都不知道,我只是從組合中選擇其類型(Wifi /不帶wifi),然后選擇相機(帶/不帶),然后選擇其他一些功能。 然后,我指定我可以負擔的價格范圍,然后在特定位置的商店中購買手機。 為此,我輸入location A, location B, location C 我想要基於這些位置的結果。 我想根據指定的搜索參數的最接近順序對結果進行排序。 精確匹配到最接近的匹配,然后是最不匹配的匹配。 希望這可以幫助

有人可以對此有所啟發嗎?

謝謝

  1. Full-Text Search Functions頁面上的文檔指出, FULLTEXT只能與MyISAM一起使用, 但是 ,MySQL 5.6通過InnoDB添加了對FULLTEXT索引的支持(​​請參見InnoDB Table and Index頁面上的Section 14.2.4.12.3 )。 如果您的表設置為MyISAM,則可以-您應該有支持; 可能與InnoDB配合使用-取決於您的MySQL版本。

  2. 要啟用全文本搜索,您應該僅在要使用搜索的字段上添加FULLTEXT索引(不要將其添加到不需要的字段中)。 FULLTEXT索引只能應用於CHARVARCHARTEXT列類型,因此可能只是一個開始。 您的產品名稱可能太短而不必擔心FULLTEXT索引(可以考慮使用HASH索引),但是您的產品描述(如果有)非常適合。

  3. enum數據最好使用BTREE索引而不是FULLTEXT索引。

  4. 不確定; 您能否發布一個示例,說明將查詢和排序哪些字段及其數據類型,以更好地了解您的需求?

  1. MySQL支持MyISAM表類型的全文,從5.6.x版本開始,某些地方支持InnoDB表的全文。
  2. 在要進行全文搜索的任何字段上添加全文索引。 int / binary / float字段上的全文沒有意義,因此,基本上,您需要在其中進行全文搜索的所有varchar / text字段
  3. 枚舉上的全文沒有意義,因為枚舉僅用於精確匹配
  4. 您可以按其內部相關性得分對全文結果進行排序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM