Wagtail: RichTextField / RichTextBlockは、検索インデックス可能なコンテンツからHTMLタグを削除する必要があります

作成日 2020年06月01日  ·  3コメント  ·  ソース: wagtail/wagtail

問題の概要

現在、RichTextFieldsまたはStreamFields内のRichTextBlocksにインデックスを付ける場合、HTMLタグを含む生のコンテンツがインデックスに渡されます。 HTMLタグの名前/属性は意味のある検索可能なコンテンツ*ではないため、Djangoのstriptagsフィルターを適用するget_searchable_contentメソッドをこれらに提供することをお勧めします。

さらに重要なことに、 Elasticsearchのハイライトサポート(#5340を参照)を利用するようにElasticsearchバックエンドをカスタマイズする(または生のElasticsearchクエリを実行する)と、合格したかどうかに応じて、結果に誤ったHTMLタグまたは誤ったフォーマットが表示されます。クエリの'encoder': 'html'

(*これは完全に真実ではありません-たとえば、画像の代替テキストにインデックスを付けるための良いケースを作ることができます-したがって、理想的な解決策は、プレーンテキスト表現を生成するためにリッチテキスト機能レベルでカスタムルールを指定できることを含むでしょう。 。ただし、バランスをとると、タグを削除する方が、タグを保持するよりも優れていると思います。)

再現する手順

https://www.rca.ac.uk/で「h2」を検索し<h2>要素を含むが、テキスト「h2」を含まない多くのページが含まれていることに注意してください。

  • この問題は、新しいWagtailプロジェクトで説明されているように再現できることを確認しました。
Search Bug

全てのコメント3件

この問題を解決するPRに取り組んでも大丈夫ですか? 私はずっと前に私のプロジェクトで上記と同じ可能な解決策をすでに実装しました。

@ acarasimon96もちろん、そうしてください!

#6099で解決

このページは役に立ちましたか?
0 / 5 - 0 評価