2012-03-18 3 views
2

誰かがと一致するかどうかを調べるには少なくとも2の入力単語が含まれているレコードのみを検索しますか?MySQLブール検索 - 少なくとも2つの入力文字列を含まないすべての結果をフィルタリングする方法?

これはクエリです:

SELECT it_title, en_title, genre, author, year, place, movie_id, url, place_it 
     . FROM movies, locations, sets 
     . WHERE MATCH (movies.it_title) AGAINST('$loc' IN BOOLEAN MODE) 

私は、入力された単語の少なくとも2を持っている唯一のマッチを取得したいのは、言わせてしまう:

  • ユーザーがいる場合:「真夜中」I "夜中にパリを避けたい"
  • "midnight in"と入力すると、私はそれを見せたいと思います。あなたがPHPを使用している場合

乾杯、あなたの場合は エリサ

答えて

0

はちょうど例えば、$のLOCのための単語を数えるstr_word_count($のLOC)とif文を作る> = 2

この私はthis siteで見つかったものと一致する複数の単語の検索についてです。

多少の調査の結果、複数のキーワードを検索する場合は、各単語の間にスペースを追加することができます。だから、テーブル上で「リンゴ、自動車部品、アパレル」という言葉を使って全文検索をしたいのなら、私はこのように書くだろう。あなたの例では難しいかもしれません

1

。 MySQLのフルテキスト検索では最小単語長(デフォルトは4)がありますので、 "in"はデフォルトでは索引付けされません。 "in"もデフォルトのストップワードの1つで、デフォルトではインデックスされません。また、1作品の映画タイトルはどうですか?自然言語の検索は難しい話題です(Googleはアルゴリズムを正しく取得するために長年努力してきました)。独自のアルゴリズムを作成しないことをお勧めします。

MySQLの自然言語検索(ブール値ではなく)を使用するだけではどうですか。結果をトップXの結果に制限するか、ユーザーがすべての結果を再度検索/表示するオプションを使用してX以上のスコアを付けたすべての結果に制限することができます。

関連する問題