__ictonainsを使用してCharFieldで "foo"のクエリーセットフィルターを実行しています。 「説明」という名前の特定のフィールドのデータベース内シンプルなDjangoクエリーセット最も具体的な要素を最初に探す__icontains検索
データセット:私は検索すると
fooal;skdjfkasdgh;alskdjrf foobar foo-nstastical foobariffic foo-ntastic foo
:
MyModel.objects.filter(description__icontains="foo")
クエリセットは、ID番号(または他のに応じて、いくつかのために結果を返します要因:?):
fooal;skdjfkasdgh;alskdjrf foobar foo-nstastical foobariffic foo-ntastic
私がトップ5の結果のみを表示する場合は、「fこれは実際に私が最初に見せたいベストマッチです。 Luceneのような「本当に重い義務の」検索エンジンを実装しなくても、簡単な方法でより良いマッチに高い重みを与えることができますか?私はより簡単なクエリーセットフィルタのハッキングが必要です。
これは、テキストデータセットの粗雑な検索エンジンです。なぜなら、上位N個の結果のみを表示するときにfooを表示することが重要である理由は、人がfoobarifficを探していた場合、より多くの文字を入力できることです。しかし、より長い文字列に置き換えられた場合、より多くの文字を入力することによって "foo"を得る方法はありません。
私は強くあなたが干し草の山の中にhttp://haystacksearch.org/を見てお勧めします。それは非常に使いやすく、構成が簡単です(Whooshバックエンドは純粋なPythonでありバイナリパッケージではありません)、非常に強力です。検索クエリを強調表示するような素敵なユーティリティがあります。検索ビュー、フォーム、およびURLが付属しています。ビューはクラスに基づいており、非常に簡単に拡張できます。 Whooshでパフォーマンスが不足している場合は、xapianベースのバックエンドに切り替えるのは簡単です。 – Ski