Re: 検索語の前処理
OhYeah!
投稿数: 983
オンライン

前処理は、PHP で書くと、下記のようにすればいいかな。
$str = str_replace('しかまき', 'ちよくは', $str);
$str = str_replace('ちかまき', 'ちよくは', $str);
$str = str_replace('おおつふ', 'たいりゆう', $str);
$str = str_replace('こつふ', 'しようりゆう', $str);
$str = str_replace('かつか', 'かくか', $str);
$str = preg_replace('/(?<!ら)たねなし|種無(し)?/', 'むかく', $str);
$str = preg_replace('/たねあり|種有(り)?/', 'ゆうかく', $str);
$str = str_replace('非結球', 'ひけつきゆう', $str);
$str = str_replace('半結球', 'はんけつきゆう', $str);
$str = str_replace('西洋', 'せいよう', $str);
$str = str_replace('食用', 'しよくよう', $str);
$str = str_replace('ろち', 'ろし', $str);
$str = preg_replace('/([^\(\,]*)?\(?((露地|ろし)(栽培|さいはい)?)\)?([^\,]*)?/', '\1\5(ろしさいはい)', $str);
$str = preg_replace('/([^\(\,]*)?\(?((施設|しせつ)(栽培|さいはい)?)\)?([^\,]*)?/', '\1\5(しせつさいはい)', $str);
$str = preg_replace('/([^\(\,]*)?\(?((水耕|すいこう)(栽培|さいはい)?)\)?([^\,]*)?/', '\1\5(すいこうさいはい)', $str);
$str = preg_replace('/(未|み)(成熟|せいしゆく)?(豆|まめ)(類|るい)?/', 'まめるい(みせいしゆく)', $str);
$str = preg_replace('/(豆|まめ)(類|るい)?\(?(未|み)(成熟|せいしゆく)?\)?/', 'まめるい(みせいしゆく)', $str);
このあと、'()[]' をエスケープして、最後に短い文字列の処理(PHP で書くと下記の部分)をすれば、問題なくなるのではないかと…。 switch ($str) {
case 'とまと': return '(?<!に)とまと';
case 'さくら': return 'さくら(?!そ|ん|す)';
case 'いね': return '(?<!か)いね(?!か|科|こ)|すいとう|りくとう';
case 'むき': return '(?<!と)むき';
case 'きひ': return '(?<!う)きひ';
case 'うめ': return '(?<!ゆ|よ)うめ';
case 'かき': return '(?<!さ)かき(?!る)';
case 'くり': return '(?<!す|み|つ|よ)くり(?!さ|ん|ふ)';
case 'なし': return '(?<!る|ち|ね)なし';
case 'もも': return '(?<!す|ま|い|ら)もも';
case 'ゆす': return 'ゆす(?!き)';
case 'うと': return '(?<!お|か|ふ|よ)うと(?!う)';
case 'かふ': return '(?<!り|た|ね|や)かふ(?!た)';
case 'ける': return '(?<!つ)ける';
case 'せり': return '(?<!は|う)せり';
case 'なす': return '(?<!た|な|ま|ひ)なす(?!な)';
case 'ねき': return '(?<!ま|と)ねき';
case 'はす': return 'はす(?!い|か|も)';
case 'ふき': return '(?<!い|わ)ふき';
case 'きく': return '(?<!ん|あ|う)きく(?!に|ち|な)';
case 'はら': return '(?<!す)はら';
case 'ゆり': return '(?<!ち)ゆり(?!の)';
case 'らん': return '(?<!か|く|し|す|と|ま|ふ|ん|お)らん';
case 'かし': return '(?<!め|ら)かし(?!す|つ|ゆ|よ|ら|ろ|わ)';
case 'きり': return '(?<!つ)きり(?!え|は)';
case 'すき': return '(?<!あ|お|み|ゆ)すき';
case 'つけ': return '(?<!け|ぬ|め|き)つけ(?!も)';
case 'ふう': return '(?<!う|ん)ふう(?!と)';
case 'ふな': return '(?<!み)ふな';
case 'まき': return 'まき(?!い|さ|ち|つ|な|ま|ろ|\(|\))';
case 'まつ': return '(?<!か|そ|と|ら|ろ)まつ(?!し|な|は|も)';
case 'やし': return '(?<!ち|ひ|ら)やし';
case 'しは': return '(?<!ろ)しは(?!い)';
case 'ちや': return '(?<!ほ|ん)ちや(?!い|ひ|と)';
case 'こま': return '(?<!え)こま(?!つ)';
}
投票数:1
平均点:0.00
投稿ツリー
-
ACFinder 120519test版 (kabe, 2012.05.19 22:32)
-
Re: ACFinder 120519test版 (OhYeah!, 2012.05.20 16:09)
-
Re: ACFinder 120519test版 (kabe, 2012.05.21 20:29)
-
Re: ACFinder 120519test版 (OhYeah!, 2012.05.21 23:29)
-
Re: ACFinder 120519test版 (OhYeah!, 2012.05.28 18:00)
-
-
-
Re: ACFinder 120519test版 (kabe, 2012.05.21 20:59)
-
Re: ACFinder 120519test版 (OhYeah!, 2012.05.24 13:21)
-
Re: ACFinder 120519test版 (OhYeah!, 2012.05.24 15:25)
-
検索語の前処理 (OhYeah!, 2012.05.29 09:31)
-
Re: 検索語の前処理 (OhYeah!, 2012.05.29 18:20)
-
-
-
Re: ACFinder 120519test版 (OhYeah!, 2012.05.28 14:32)
-
Re: ACFinder 120519test版 (OhYeah!, 2012.05.28 16:21)
-
Re: ACFinder 120519test版 (OhYeah!, 2012.05.28 23:28)
-
-
-
-
-