私は都市と州のデータベースを持っています (約 43,000)。次のように全文検索を行います。
select city, state, match(city, state_short, state) against (:q in boolean mode) as score
from zipcodes where
match(city, state_short, state) against (:q in boolean mode)
group by city, state order by score desc limit 6
意味のある文字列に置き換える:q
と機能しますが、 を検索するとしhouston texas
ましょう。結果を最初にしたいのですが、代わりに3番目です。
North Houston, Texas
South Houston, Texas
Houston, Texas
どうすればHouston, Texas
他の2人よりも体重を増やすことができますか? これは明らかに、このような他の都市でも同じはずです。
編集
これはうまくいきます、それについて何か考えはありますか?
SELECT * FROM (
SELECT city, state, MATCH(city, state_short, state) AGAINST (:q IN BOOLEAN MODE) as score
FROM zipcodes
WHERE MATCH(city, state_short, state) AGAINST (:q IN BOOLEAN MODE)
GROUP BY city, state
ORDER BY score DESC LIMIT 6
) AS tbl
ORDER BY score DESC, LENGTH(city)