0

私のサイトには検索フォームがあり、検索の語順によって異なる結果を返します。これは、2 つの検索語の WHERE の後に続くクエリの一部です。

(name_ru = '".words[0]."' or name_ru like '".words[0]."%' or name_ru like '% ".words[0]."%' or name_ru like '"".words[0]."%' or brief_description_ru like '%".words[0]."%' or product_code like '%".words[0]."%' or product_code in (select product_code from ALLPRODUCTS where searchfilter like '%".words[0]."%')) or product_code in (select product_code from SC_products prd JOIN SC_product_manufacturers mnf ON prd.manufacturerID=mnf.manufacturerID where mnf.filters like '%".words[0]."%') 
AND (name_ru = '".words[1]."' or name_ru like '".words[1]."%' or name_ru like '% ".words[1]."%' or name_ru like '"".words[1]."%' or brief_description_ru like '%".words[1]."%' or product_code like '%".words[1]."%' or product_code in (select product_code from ALLPRODUCTS where searchfilter like '%".words[1]."%')) or product_code in (select product_code from SC_products prd JOIN SC_product_manufacturers mnf ON prd.manufacturerID=mnf.manufacturerID where mnf.filters like '%".words[1]."%') 

この 2 つの単語の順序を変更すると、結果に含まれる行数が異なります。単語の順序に依存しない、毎回同じ結果を得るにはどうすればよいですか?

4

1 に答える 1

0

作成した方法でクエリを実行するのではなく、フルテキスト インデックスの追加/フルテキスト検索の使用を検討する必要があります。http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.htmlを参照してください。

全文検索では、特定の一致ではなく、自然言語技術を使用してクエリを調べます。MyISAM テーブルを使用している場合、全文インデックスを追加できますが、ほとんどのテーブル タイプではブール モードで全文検索が可能です。

于 2013-07-11T13:11:38.580 に答える