1

私の現在のクエリ:

SELECT SCHOOL_NAME, TOWN, POSTCODE, COUNTRY, COUNTY, id FROM schools
WHERE MATCH(LA_NAME, SCHOOL_NAME, STREET, LOCALITY, ADDRESS3, TOWN, COUNTY)
AGAINST ("southwark") AND COUNTRY = 'gb' limit 0,5;

戻ってきます(健全性のために一部のデータを削除しました):

Southwark Park School       
The Cathedral School of St Saviour and St Mary Ove...   
Harris Academy Bermondsey   
Southwark Inclusive Learning Service KS3, KS4 & Si...   
St George's Cathedral Catholic Primary School

サザーク小学校はこれらの結果に含まれていないことに注意してください

このクエリを実行すると

SELECT SCHOOL_NAME FROM  schools WHERE `SCHOOL_NAME` LIKE  '%southwark%' LIMIT 0 , 3

私の返された応答は

City of London Academy (Southwark)
Southwark Primary School
Southwark Park School

キーポイント: サザーク小学校は、ここの結果で利用できます。これは、自然言語の検索結果に欠けているものです。

説明ショー:

id  select_type table   type     possible_keys  key key_len ref rows    Extra
1   SIMPLE          schools fulltext LA_NAME    LA_NAME 0       1   Using where

そのため、何らかの理由で自然言語検索がうまく機能していません。ブールモードで遊んでみましたが、うまくいきません。私が間違っているかもしれないことに誰かが光を当てることができますか?

注:最初のクエリの制限を 0.50 に変更しても、まだサザーク小学校は表示されません。

編集:自然言語検索を制限 0,240 に変更すると、結果 #238 として結果が得られます。

編集#2

myisam_ftdump mydatabase/schools 1 -c | grep southwark

戻り値:

108         7.7915840 southwark

更新: LA_NAME には Southwark の値があるように見えるので、多くの値にそれが含まれています。この問題を特定するために myisam_ftdump を使用しました。私は今、修正について熟考することができます。

修正:これを修正するには、フルテキストを変更して LA_NAME を含めないようにしなければなりませんでした。また、IE の郵便番号が実際には必要ではない他のデータも削除しました。また、削除したフィールドを使用しないように MySQL クエリを変更しました。

4

1 に答える 1

0

自然言語検索で同様の課題に遭遇したことがあります。LA_NAME に含まれているというあなたの発言は、12.9.1 で回答されるかもしれません。自然言語全文検索:

「MySQL」という単語が行の少なくとも 50% に存在するため、検索結果は空です。そのため、効果的にストップワードとして扱われます。

于 2012-06-03T16:49:01.210 に答える