私は2つのテーブルを持っています。私はそれを行うことができる唯一の方法は、2つの別々のループを持つことである現時点でMYSQL/PHPは別のテーブルのテキストのスニペットに基づいて結合します
Table A (documents): +-------------+----------------------------+ | document_id | document_text | +-------------+----------------------------+ | 1 | My favorite color is blue | +-------------+----------------------------+ | 2 | My favorite color is green | +-------------+----------------------------+ | 3 | Yellow is my favorite | +-------------+----------------------------+ | 4 | I like all colors | +-------------+----------------------------+
Table B (snippet): +------------+--------------+ | snippet_id | snippet_text | +------------+--------------+ | 1 | orange | +------------+--------------+ | 2 | black | +------------+--------------+ | 3 | yellow | +------------+--------------+ | 4 | green | +------------+--------------+ | 5 | blue | +------------+--------------+
:私は2番目のテーブルに含まれるテキストの抜粋に基づいてテーブルを結合するための効率的な方法を見つけようとしています私のスクリプトには最初のものがテーブルBにあり、次にもう1つはテーブルBから得られたスニペットに基づいてテーブルAに問い合わせるものです。
実際の世界のデータでは、スニペットは長い文章であり、テーブルAは多くのテキストを含む数千の行が含まれています。
mysqlクエリで実行しようとすると、データがあまりない場合でもロードに3分以上かかります。
SELECT * FROM table_b left join table_a on document_text LIKE CONCAT('%', snippet_text, '%')
ので、サンプルデータと、所望の結果が
+-------------+----------------------------+-----------+ | document_id | document_text | snippet_id | +-------------+----------------------------+-----------+ | 1 | My favorite color is blue | 5 | +-------------+----------------------------+-----------+ | 2 | My favorite color is green | 4 | +-------------+----------------------------+-----------+ | 3 | Yellow is my favorite | 3 | +-------------+----------------------------+-----------+ | 4 | I like all colors | NULL | +-------------+----------------------------+-----------+
https://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html – GurV
こんにちは、私はそれについて読んできましたが、フルテキスト検索でテーブルを結合する方法を理解できません。私は正確に一致する文章が必要です。 – user3163357