PHP を使用して、異なる構造の XML ファイルを結合する必要があります。私がやっていることは次のとおりです。
- を使用して最初の XML ファイルを読み取ります
simplexml_load_file()
SimpleXMLElement()
クラスを使用して新しい構造を使用して要素を再フォーマットしますSimpleXMLElement()
他のファイルについても同じことを行い、最初のインスタンスをインクリメントします- 新しく結合された XML ファイルを保存します。
ここまでは順調ですね。トリッキーな部分は、最初のファイルには約があります。3000 のエントリと 2 番目のファイルには 5000 のエントリがあります。これらのエントリのほぼ 2000 は実際には同じです。数文字違うだけかもしれません。たとえば、「Lenovo G50-70 CoreI5」と「Lenovo G5070 I5」かもしれません。
問題は、最初のファイルのエントリを 2 番目のファイルのエントリと一致させるにはどうすればよいかということです。実際には、新しい結合ファイルでは合計で 1 つのエントリだけになるのでしょうか?
similar_text()
PHP と SmithWatermanGotoh の両方の関数を使用して類似度を計算していますが、スコアは 86% です。これで十分です。しかし、1 つのエントリだけに一致するように他のファイルのすべてのエントリを反復することは、非常に賢明ではなく、リソースを消費します。なぜなら、それは約を意味するからです。新しい更新されたファイルを保存するたびに、7 MB のファイルがメモリにロードされ、最低 15,000 回の反復が行われます。
すべてのエントリをデータベース テーブルに挿入することを検討し、Sphinx Search を使用してエントリを照合します。しかし、それが本当に十分に役立つかどうかはわかりません。