私は自分のサイトに小さな検索機能を構築しています。ユーザーのクエリを取得し、キーワードをステミングしてから、ステミングされたキーワードに対してフルテキストの MySQL 検索を実行しています。
問題は、MySQL がステムをリテラルとして扱っていることです。起こっているプロセスは次のとおりです。
- ユーザーが「野球」などの単語を検索する
- 私のステミング アルゴリズム (Porter Stemmer) は、「野球」を「野球」に変換します。
- "baseball" と "baseballs" の一致が存在する必要がありますが、fulltext で "basebal" に一致するものは見つかりません。
フルテキストで LIKE 'basebal%' に相当することを行うにはどうすればよいですか?
編集:
これが私の現在のクエリです:
SELECT MATCH (`title`,`body`) AGAINST ('basebal') AS `relevance`,`id` FROM `blogs` WHERE MATCH (`title`,`body`) AGAINST ('basebal') ORDER BY `relevance` DESC