用語ノードでタグ付けされたコンテンツノードを含むグラフに取り組んでいます。他の(検索)用語ノードと同じコンテンツノードに接続されている(一致した)用語ノードを返すクエリを機能させようとしています。
(matched:term)--(contentNode:content)--(search:term)
私が抱えている問題は、すべての検索用語が接続されているコンテンツではなく、コンテンツに接続されている一致した用語ノードを返すことです。
これが私の現在のクエリの簡略版です:
query = [
'MATCH (matched:term)<-[:TAGGED_WITH]-(contentNode:content)-[:TAGGED_WITH]->(searchTerms:term) ',
'WHERE searchTerms.UUID IN {searchTerms} ',
'RETURN DISTINCT matched.name AS name, matched.UUID AS UUID, matched.contentConnections AS connections ',
'ORDER BY connections DESC LIMIT 10'
].join('\n');
これが実際の例です-用語の上のグループは私のクエリによって一致した用語であり、下は検索に使用されている用語です:
「天文学」という用語は返されるべきではありませんが、「画像」でタグ付けされた一部のコンテンツも「天文学」でタグ付けされているためです。
結果のグラフ表現:
1つのコンテンツ(灰色のノード)のみが両方の用語に一致することに注意してください(ノードIDが表示されるため、見分けがつきません)。期待されるのは、「画像」と「臓器」の両方でタグ付けされたコンテンツに関連する用語のみを返すことです。
もう一つの例:
'organ'と 'astronomy'の両方でタグ付けされたコンテンツはないため、この検索では用語は生成されませんが、どちらかにタグ付けされた用語が返されます。
グラフ表現:
私の質問を明確にしたと思います。count()
結果をグループ化するために一緒に作業しようとしましたが、それを機能させるのに苦労しました。
どんな助けでもいただければ幸いです。
編集:
クエリ:
query = [
'MATCH (contentNode:content)-[:TAGGED_WITH]->(searchTerms:term) ',
'WITH contentNode, COUNT(contentNode) as countContent, searchTerms ',
'WHERE searchTerms.UUID IN {searchTerms} AND countContent = {searchTermsCount} ',
'MATCH (typeNode:termType)<-[:IS_TYPE]-(matched:term)<-[:TAGGED_WITH]-contentNode, ',
'matched-[:HAS_LANGUAGE {languageCode: {language} }]-(termMeta:termMeta) ',
'WHERE NOT matched.UUID IN {ignoreTerms}',
'RETURN DISTINCT termMeta.name AS name, matched.UUID AS UUID, matched.contentConnections AS connections ',
'ORDER BY connections DESC LIMIT 10'
].join('\n');
次の2つの用語を選択すると、クエリはそれらのコンテンツ( 'evolution'、 'ant'など)のいずれかにタグ付けされた用語を返すことが期待されますが、上記のクエリでは用語は返されません。
クエリを2つに分割してみてください。
MATCH (contentNode:content)-[:TAGGED_WITH]->(searchTerms:term)
WHERE searchTerms.UUID IN {searchTerms}
WITH contentNode, COUNT(*) as cnt
WHERE cnt = {_searchTerms_size_}
MATCH (matched:term)<-[:TAGGED_WITH]-contentNode
RETURN DISTINCT matched.name AS name, matched.UUID AS UUID, matched.contentConnections AS connections
ORDER BY connections DESC LIMIT 10
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加