問題タブ [whoosh]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Django-haystack: オートコンプリートに必要な「content_auto」行を追加した後、rebuild_index が失敗する (haystack.exceptions.SearchFieldError)
単語の一部のみを検索するための結果を生成することを実装しようとしています (autocomplete
私が間違っていなければ、Haystack のドキュメントに従って呼び出されます)。
例:
探す"gol"
結果"goldfish"
私は何を試しましたか?
docs のステップ 1 で求められたとおりに実行し、Index クラスに次の行を追加しました。
それからやったpython manage.py rebuild_index
。
ただし、インデックスを再構築すると、インデックス付きテーブルの最初のエントリであり、インデックスを作成したモデルであるというエラーが発生しましたhaystack.exceptions.SearchFieldError: The model '<Person: Reginald>' does not have a model_attr 'content'.
。Reginald
Person
実際、私のモデルにはフィールドがありませんがcontent
、ドキュメントに示されているように、そのようなフィールドを持つ必要はありません。
Whoosh 2.4.1
、Django-haystack 1.2.7
およびを使用してDjango 1.4
います。
python - DjangoでHaystack+Whooshの正しいクエリを作成する方法
私はモデルを持っています:
そしてファイルsearch_indexes.py:
クエリを実行すると、TITLEフィールドにある単語よりも検索できます。TEXTフィールドの単語の組み合わせを使用すると、「結果が見つかりません」というメッセージが表示されました。
TEXTフィールドの単語でクエリを実行するために何を追加する必要がありますか?
whoosh - トークンにスラッシュと括弧を含める
バックグラウンド
ギリシャ文字を含む検索インデックスがあります。多くの人はギリシャ語の入力方法を知らないので、「ベータコード」と呼ばれるものを入力します。ベータコードはギリシャ語に変換できます。たとえば、ベータコード「NO/MOU」は「νόμου」に変換されます。スラッシュや括弧などの文字は、アクセントを示すために使用されます。
望ましい行動
ユーザーがギリシャ文字のベータコードまたはテキストを使用して検索できるようにしたいと思います。私は、Whooshバリエーションクラスが必要なメカニズムを提供し、それが私の問題をほぼ解決することを理解しました。
問題
スラッシュまたは括弧を使用してユーザーのクエリのアクセントを示す場合を除いて、Variationクラスは適切に機能します。問題は、アクセントを示すために使用される特殊文字が単語を分割する結果になるようにクエリが解析されることです。たとえば、「NO / MOU」を検索すると、Variationsクラスは、「NO/MOU」ではなく「no」と「mou」のバリエーションを見つけるように求められます。
質問
検索ワードにスラッシュと括弧が含まれるように、クエリの解析方法に影響を与える方法はありますか(つまり、「NO / MOU」を検索すると、「NO/MOU」ではなく「NO/MOU」のトークンが検索されます。 no」と「mou」)?
python - Pythonでインデックスが不足しています
私はExcelファイルにインデックスを作成しようとしていて、whooshパッケージを使用しましたが、リストのインデックスが範囲外であるというエラーが見つかりました。お願いします、誰か助けてくれませんか?私のコードは次のとおりです。
このエラーが発生し、理由がわかりませんか? エラー:
そして私のcsvファイル:
python - シューッ: OR は結果を増やすだけではいけませんか?
バックエンドとして Whoosh 2.4.1 を使用し、Haystack 1.2.7 を使用して約 9,000 のドキュメントをインデックス化しています。Haystack を使用しているにもかかわらず、それはシューシュの問題のように見えます。私のデバッグケースを見てください:
1) 正確なルックアップを実行すると、Whoosh はドキュメントを見つけます (以下のように):
2) startswith ルックアップを実行しただけでは、Whoosh はドキュメントを見つけられません (以下のように):
3) すべてを 1 つの OR クエリにまとめても、Whoosh はまだドキュメントを見つけられません (以下のように):
Haystack が Whoosh に送信するクエリを調べると、次のようになります。
ご覧のとおり、最後のクエリは正確に (最初または 2 番目) です。Whoosh が私のドキュメントを見つけてはいけませんか? ロジックのどこが間違っているのかわかりません。OR を使用していますが、ステートメントの 1 つを使用した場合よりも結果が少なくなります。
また、Whoosh が最初のクエリ (numero:6210202443/10) でドキュメントを検索し、2 番目のクエリ (numero:6210202443/10*) では検索しないのも奇妙だと思います。しかし、Haystack が私の CharField で使用する StemmingAnalyzer と関係があると思います。この後、深く考察していきます。
django - HerokuでDjangoアプリのバックエンドを検索する
私の開発アプリでは、Whooshをバックエンドとして検索するためにHaystackのコンボを使用しています。
ただし、Herokuにデプロイすると、を実行した後でも検索が機能しなくなりますpython manage.py update_index
。
調べてみると、Herokuの読み取り専用ファイルシステムが原因であることがわかりました。
検索を機能させるために、Herokuでこれを回避するための無料のソリューションはありますか?私が見たアドオンは月額約$20で、可能であれば無料のソリューションを使い始めたいと思います。
django - whoosh を使用した Django-haystack 検索で「結果がありません」というデバッグが失敗する
私はDjangoとHaystackが初めてです。Haystack ドキュメンテーションの「はじめに」ページとデバッグ ページで提案されていることはすべて実行しましたが、どこにエラーがあるのかわかりません。 sqs.count()
動作しているように見えても 0 を返しrebuild_index
、インデックスが作成されるテーブルに適切な数のエントリを与え、ディレクトリにインデックス ファイルを生成しますwhoosh_index
。
search_indexes
必要なtext =
行があり、search_sites.py があり、settings.py と urls.py を変更し、正しいディレクトリに [model_name]_text.txt ファイルがあります。
私たちは大学のサーバーで作業していますが、Haystack をインストールした後、Haystack と連携するように Django を更新する必要がありました。互換性のないバージョン (1.5 ではなく 1.1) であることに気付いたからです。
django - haystack whooshnoresults-rebuild_indexはインデックス作成を示しています[番号]
実行する./manage.py rebuild_index
と、たとえば次のように表示されます。
Indexing 4574 <django.utils.functional.__proxy__ object at at 0x1aab690> .
他のユーザーの読み取り値を見ると、代わりに検索インデックス/モデルの名前が表示されているはずです。これが、Webサイトで検索結果が表示されず、オブジェクトが表示されない理由の説明の一部になるのではないかと思います。実行時にインデックスが付けられます:
私は最初はdef_unicode _self()を持っていませんでした:インデックスを作成しているモデルでself.nameを返しますが、それを追加しましたが、実行しても何も変わらないようでしたrebuild_index
whoosh - whoosh は "C#" のような短い単語を検索しません
私は 200,000 冊以上の書籍のインデックス作成に whoosh を使用しています。しかし、私はそれでいくつかの問題に遭遇しました。whoosh クエリ パーサーは、"C#"、"C++" などのメタ文字を含む単語、およびその他の短い単語に対して NullQuery を返します。この単語は一部のドキュメントのタイトルと本文で使用されているため、キーワード タイプは使用していません。問題は、検索またはインデックス作成の分析またはクエリ解析フェーズにあると思いますが、やみくもにデータに触れることはできません。誰でもこの問題を修正するのを手伝ってもらえますか? Tnx。
私の要件を満たす正規表現パターンを使用して StandardAnalyzer を作成することで問題を修正しました。正規表現パターンは次のとおりです。
'\w+[#+.\w]*'
これにより、フィールドのトークン化が正常に行われ、検索もうまくいきます。しかし、「some query++*」や「some##*」などのクエリを使用すると、解析されたクエリは単一の Every クエリになり、「*」だけになります。また、これは私のアナライザーとは関係がなく、これが Whoosh のデフォルトの動作であることもわかりました。ここに私の新しい質問があります: この動作は正しいですか、それともバグですか??
注: クエリ パーサーから WildcardPlugin を削除すると、この問題は解決しますが、WildcardPlugin も必要です。
今、私は次のコードを使用しています:
...今私のスキーマで:
はい、これで最初の問題は解決します。しかし、主な問題は検索にあります。Every
ユーザーにクエリまたはを使用して検索させたくありません*
。しかし、クエリを解析するC++*
と、クエリが終了しEvery(*)
ます。何か問題があることは知っていますが、それが何であるかわかりません。
django - Django-whooshを使用したhaystack-ブールフィールドでフィルタリングできません
さて、私はこれから何時間も髪を引っ張っていて、グーグル検索でこれが起こっている理由を見つけることができないので、助けを求める時が来たと思いました...
基本的に私は求人広告タイプのアプリケーションを作成しており、データベースを検索してさまざまな基準に基づいてフィルタリングするための検索フォームが必要です。私はdjango、haystack、whooshを使用しており、ほぼ完全に機能していますが、ブール変数でフィルター処理できるようには見えません。Charfieldカテゴリでのフィルタリングに成功し、完全に機能しますが、for_saleブール値(またはそのことについてはブール値)に基づいてフィルターを追加しようとすると、何もフィルタリングされず、次のように同じ結果が返されます。呼び出されることはありませんでした(確認しましたが、実際に呼び出されています)。
誰かアイデアはありますか?
私のモデルの関連部分:
これは私のリストインデックスクラスです:
私の拡張SearchFormとSearchView:
そして最後に私のリストインデックステキストファイル: