Re: 検索語の前処理

このトピックの投稿一覧へ

なし Re: 検索語の前処理

msg# 1.3.1.1.1.1
depth:
5
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2012.05.29 18:20 | 最終変更
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

投稿ツリー

  条件検索へ