問題
-
JournalArticleLocalServiceUtil クラスを使用して Web コンテンツ記事を検索する場合、フィールド コンテンツの xml タグが考慮されます。 したがって、「xml」を検索すると、すべての Web コンテンツ記事が返されます。
- 結果の例:
<?xml version="1.0"?>
<root available-locales="en_US" default-locale="en_US">
<dynamic-element name="Summary" type="text_box" index-type="text" instance-id="pkih">
<dynamic-content language-id="en_US"><![CDATA[Testes]]></dynamic-content>
</dynamic-element>
...
</root>
Environment
- DXP 7.2
解決策
- 使用している API が 検索インデックス クエリではなく データベース検索 を実行しているため、この動作は意図されています。
OrderByComparator<JournalArticle> obc = OrderByComparatorFactoryUtil.create("JournalArticleLocalization", "title",true);
List<JournalArticle> journalArticles= JournalArticleLocalServiceUtil.search(companyId, groupId, folderIds, classNameId, articleId, version, title, description, content, ddmStructureKeys, ddmTemplateKeys, displayDateGT, displayDateLT, status, reviewDate, andOperator, start, end, obc); - Liferay の検索ウィジェットとほとんどのアセット管理者は、 検索インデックス クエリを使用しています。 検索インデックスでは、有用な用語のみが保存され、XML 構造などのマークアップは、インデックス作成プロセス中に Liferay 側でエンティティから生のテキストが抽出されるときに削除されます。
- 一方、 JournalArticles 、Web コンテンツ管理ポートレット (journal-web) にキーワードが追加された場合、上記の方法を使用して実際には検索されません。
代わりにこのコード が使用されます。 - このコードはパブリック API の一部ではありませんが (おそらくまだ)、記事の表示部分のみを使用して検索することが目標である場合は、キーワード検索にインデクサー アプローチを使用することをお勧めします。 上記の例を参考にして、ニーズに合わせて調整することをお勧めします。