1

テキストフィールドを含むテーブルがあります。行に応じて、フィールドには3〜4文程度あります。

ここで、オートコンプリートhtmlオブジェクトを作成しています。単語の先頭の入力を開始し、データベースがデータベースのテキストフィールドからそれらの文字で始まる単語を返すようにします。

テキストフィールドの例:私はフィッシュスティックが好きです、フィッシュハットも素晴らしいです

オートコンプリートで「魚」と入力すると、「フィッシュスティック」と「フィッシュハット」が提案されます

クエリ以外はすべて機能します。

特定の単語を含む行を簡単に見つけることができますが、全文ではなく単語だけを抽出することはできません。

select data_txt from mytable match(data_txt) against('fish', IN BOOLEAN MODE) limit 10

汚れていることはわかっていますが、データベースを再配置できません。

ご協力ありがとうございました!

編集:

これが私が得たものです、ブレント・ワーデンのおかげで、それはきれいではありませんが、それは機能します:

SELECT DISTINCT
SUBSTRING(data_txt, 
LOCATE('great', data_txt),
LOCATE(' ' , data_txt, LOCATE('great', data_txt)) - LOCATE('great', data_txt)
)
 FROM mytable WHERE data_txt LIKE '% great%'
LIMIT 10

LOCATE同じ式を何度も使用しないようにする方法について何か考えはありますか?

4

2 に答える 2

0

LOCATE単語の出現を見つけるために使用します。

LOCATEおよび前のLOCATE戻り値を使用して、単語の後の最初のスペースの出現を検索します。

USESUBSTRと前の2つのLOCATE戻り値を使用して、単語全体を抽出します。

于 2011-03-03T18:52:17.967 に答える
0
$tagsql ="SELECT * from mytable";
$tagquery = mysql_query($tagsql);

$tags = array(); //Creates an empty array

while ($tagrow = mysql_fetch_array($tagquery)) {

   $tags[] = tagrow['tags']; //Fills the empty array

}

行にコンマが含まれている場合は、-を使用できます

 $comma_separated = implode(",", $tags);

テーブル内でスペースとして区切られている場合は、スペースのコンマを置き換えることができます。

$exp = explode(",", $comma_separated);

データを一意にする必要がある場合は、次のものを含めることができます。

$uniquetags = array_unique($exp, SORT_REGULAR);

print_rを使用して、結果の配列の結果を確認できます

ここでは、'jquery'オートコンプリートを使用している場合は$rtが表示されないため、array_mergeが使用されます。そうでない場合、$ rtが機能し、array_mergeは無視できます。ただし、前のプロセスを繰り返すことにより、array_mergeを使用して複数のテーブルを含めることができます。

$autocompletetags = array_merge((array)$uniquetags);

これにより、値がアルファベット順に並べ替えられます

sort($autocompletetags, SORT_REGULAR);
于 2013-01-30T13:20:28.083 に答える