Zend_Search_Lucene + PHPMorphyはただ

Zend_Search_Luceneのドキュメントを見たことがあります。 すべてが良く、すべてが明確です。 Webサイトに組み込みます。 しかし、ステマーまたは形態素解析器をこのものにねじ込む方法についての言葉はありません。 実際、たとえばPHPMorphyと友達を作るのは非常に簡単であることがわかりました。

実際には、それを行う方法-カットの下で。

このメモは、サイトでの全文検索の問題にまだ直面していない開発者にとって主に役立ちます。

ここでは、LuceneまたはPHPMorphyを構成するためのマニュアルは見つかりません。この情報はすでにインターネット上に豊富にあります。





それでは始めましょう。

インデックスに追加する前に、テキストはトークンに分割されます。 これがどのように起こるかについては、クラスZend_Search_Lucene_Analysis_Analyzer_ *が責任を負います。 アナライザーの入力にはテキストが、出力にはトークンのリストがあります。 トークンは、インデックスに直接書き込まれる単語+ドキュメント内の位置です。 少なくともそのように理解しています。 アナライザーに加えて、単語を小文字に変換したり、3文字より短い単語をスキップしないフィルターがあります。

必要なことは、単語を何らかの初期形式に変換するフィルターを作成することだけです。 このフォームはインデックスに保存されます。 言うのを忘れました。 インデックスに対するすべてのクエリも、同じトークン化とフィルタリングの手順を実行します。 したがって、検索は単語の初期形式に従って実行されますが、実際にはこれが必要です。 コードは次のとおりです。



class My_PHPMorphy_TokenFilter extends Zend_Search_Lucene_Analysis_TokenFilter { public function normalize(Zend_Search_Lucene_Analysis_Token $srcToken) { //   Zend_Search_Lucene_Analysis_TokenFilter_LowerCaseUtf8 //      } } $analyzer = new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8(); $analyzer->addFilter(new My_PHPMorphy_TokenFilter()); Zend_Search_Lucene_Analysis_Analyzer::setDefault($analyzer);
      
      







それだけです Zend_Frameworkマニュアルで教えているように、必要なものにインデックスを付け、ユーザーの検索結果を表示します。



All Articles