2017-12-10 1 views
0

私はIdTextフィールドのテーブルを持っています。 Textフィールドには平均50語の文章が格納されます。 1,000,000を超える行があります。カスタム関数を使用してデータベースを非効率的にソートしていますか?

これは、ユーザーがこれらの文章を検索できる必要があるWebアプリケーションの一部です。しかし、ここにひねりがあります - 代わりに機械学習を使用するC#で書かれたカスタム検索機能を実行する必要があります。

これは私が理解しているからです。ユーザーが検索するたびに、1,000,000を超えるデータベースのデータベース全体をダウンロードする必要があります。!これは本当に私にとっては非効率的です。

これを最も効率的に/高速に実装するにはどうすればよいですか?

これが関連している場合は、私は解決策を見つけたと思うPostgreSQLデータベース

+0

ソートについて質問していますか?またはC#経由で検索していますか? –

+0

私の検索機能は基本的に2つの項目を受け取り比較する機能です。私は現在、すべての行をダウンロードし、その関数でソートしてからトップ5に戻します。答えがC#固有であれば気にしません.SQL /データベースのみを含むソリューションがありますか? – Biarity

+2

あなたは[フルテキスト検索](https://www.postgresql.org/docs/current/static/textsearch.html)のブログを検討していますか?[Postgres全文検索は十分です!](http: /rachbelaid.com/postgres-full-text-search-is-good-enough/) –

答えて

0

で、LINQ .Where(my_custom_search_function)とEFコアを使用しています。 Postgresqlの全文検索では現在、two ranking functionsが提供されています。この場合、質問の「ソート」と「ランク付け」は同じことを指します。

のPostgreSQLのドキュメントの状態:

しかし、関連性の概念が曖昧と非常にアプリケーション固有です。異なるアプリケーションは、ランク付けのための追加の情報、例えば文書修正時間を必要とすることがある。組み込みランク付け関数は単なる例に過ぎません。 独自のランキング機能を作成したり、特定のニーズに合わせて追加の要因を組み合わせたりすることができます。

これらの機能は、four kinds of supported postgresql functionsのいずれでもかまいません。それはI/Oバウンドので、遅くなることが一致する各文書のtsvectorはコンサルティング必要とするため高価なことができますランキング

それから、彼らはこの正確な質問に答えます。 残念ながら、を避けることはほとんど不可能です。実用的なクエリは、しばしば多数の一致をもたらすからです。

投稿者:@Used_By_投稿者:Postgresqlフルテキスト検索を私に指摘してください。

関連する問題