2

特定のテーブルで varchar と int の両方の 50 以上の列を検索する方法が必要です。人々が Lucene と Sphinx を推奨しているのを見てきましたが、それらを使用する方法がわかりません.MySQL のフルテキストでは、16 を超える列または varchar 列と int 列の両方を結合することはできません.

4

2 に答える 2

2

テーブルが頻繁に更新されない場合、または変更が検索に反映されるまでのタイム ラグが許容できる場合は、定期的に再生成された派生テーブルを作成して、すべての列を結合し、LONGTEXTその上にフルテキスト インデックスを作成することができます。

于 2009-08-25T16:25:12.407 に答える
0

テーブルを回転させて少し切り刻むことを検討することをお勧めします。すべての varchar 列を取得し、データを 1 つのテーブル "Search_Strings" に格納します。int 列についても同じことを行います。

元のテーブル

id
always_field1
always_field2
varstring1
...
varstringx
int1
...
inty

新しい main_table (元のテーブルと同じ行数ですが、列はほとんどありません)

id
always_field1
always_field2 

検索文字列 (

id (FK to main_table)
old_column_name
string_value

Search_Ints

id (FK to main_table)
old_column_name
int_value

このセットアップでは、string_value にのみフルテキスト インデックスが必要です。申し訳ありませんが、Sphinx や Lucene について詳しくないため、何も提案できません。

于 2009-08-25T16:26:31.827 に答える