0

たとえば、次の文字列があります。「ザ・ビートルズ - イマジン」 さらに、PostgreSQL にはアーティスト名の膨大なリストがあります。

その文字列を指定して、データベースを使用してアーティストを特定したいと思います。

これを行うための最適で高速なアルゴリズム/テクノロジーを探しています。したがって、データベース内のすべてのレコードを繰り返し処理して部分文字列を探すことはできません。

文字列は "Imagine - The Beatles"、"Imagine, The Beatles" のいずれかです。Youtubeの動画の曲名と同じです。

Solr、ElasticSearch、またはその他のテクノロジーはここで役立ちますか? これについてのオタクのアドバイスが大好きです。

4

2 に答える 2

0

原則として、データベース内のいずれかのレコードに検索文字列が含まれる場合、データベース内のすべてのレコードを検索する必要があります。

できることは、Rabin-Karp アルゴリズムのようなものを使用して、検索文字列の同じ長さのバージョンを同時に検索することです: "Beatles The"、"The Beatles"。スペースや句読点を無視すると、「The Beatles」、「Beatles, The」、「Beatles The」のようにパスの数をさらに減らすことができる場合があります。文字だけを数えると、Craig Ringerの回答のすべての例は同じ長さです。Rabin-Karp を使用して、データベースを 1 回通過するだけで、これらすべての一致を見つけることができます。

于 2014-01-18T11:07:46.537 に答える