次のような構造を持つかなり大きなテーブル (〜 30M 行) がいくつかあります:
- item_id - uint
- item_text - varchar(255)
- user_id - uint
キーはなく、item_id と item_text が同じで user_id が異なるレコードを見つけることができます。
item_id, item_text, user_id
3, text1, 5
3, text1, 7
4, text2, 5
テキスト検索を行うために MySQL から Sphinx に移行しようとしていますが、次のように翻訳するにはどうすればよいでしょうか:
SELECT * FROM table WHERE user_id=123 AND item_text LIKE '%search_string%'. ?!
現在の sphinx 構成設定では、インデクサーがディスク容量を使い果たしています。
source items
{
...
sql_query_pre = SELECT @id := 0
sql_query = SELECT @id := @id + 1, item_id, item_text, user_id FROM items
sql_attr_uint = user_id
sql_attr_uint = item_id
}
index items_index
{
source = items
path = ...
enable_star = 1
min_prefix_len = 0
min_infix_len = 3
min_word_len = 3
}
各 item_id で見つかった user_id 値を格納するために sql_attr_multi を使用する方法はありますか?
ありがとう !