2009-04-16 11 views
0

私はmysqlデータベースで全文検索をしようとしています。問題は、いくつかのフィールドがnullのままになる可能性があることです。たとえば、私は列nullカラムのmysql全文検索

StreetLine1

StreetLine2

市との基本的なアドレステーブルを持っている

ジップ

現在、これらのどれもするつもりはありませんtのいずれか1つが必要なので裾がヌルになることがあります。私は、フルテキスト検索を行うとフィールドのどれもが、それは素晴らしい作品ヌルされていない場合は

SELECT *, 
(MATCH (StreetLine1, StreetLine2, City, State, Zip) 
AGAINST ('+{0}*' IN BOOLEAN MODE)) AS Relevance 
FROM Address 
HAVING Relevance > 0 
Order By Relevance Desc 

は{0}プレースホルダ

です。しかし、いずれかがnullの場合、行は返されません。

は私がやったように、私はちょうどビューを作成する必要があります考え出したが、その後、私はそのビュー

任意の提案がにフルテキストインデックスを追加する方法を見つけ出すことができませんでしたか?

答えて

1

これらのフィールドは、フルテキスト検索を行うには小さすぎます。さらに、テーブルMyIsamを作成する必要があります。これは一般にInnoDbよりも適していません。

ここでLIKE演算子を使用します。

0

あなたは「のLn」のような通りの番号や略語などのようなものと一致するようにしようとしている場合、デフォルト4よりも低く設定し、あなたのmy.cnf[mysqld]の下で、あなたが持っていることを確認してください:私が持っている

ft_min_word_len=2 

これは、ユーザーが2文字の州の略語などを検索したい地理的データに使用されます。索引に短い単語が存在しないことに初めて気が付いたときには、それは分かりません。もちろん、ft_min_word_lenの値を変更した後でインデックスを再構築する必要があります。