複数のリンクはneo4jの最適化を暗号化します(//ファセット検索?)

BridgeIneptique

先に進む前に、これが私のデータモデルの表現です。私は今のところNeo4J1.9.2で立ち往生していて、かなり大きなデータベースを持っています(私が知る限り、最大100万ノード、多分それ以下ですが、すべてのデータが取り込まれると時間とともに成長します)。これで、ファセット検索の意味を説明できます。

私のアイテム(documentaryUnit)は、キーワード(さまざまなタイプを持つことができます)にリンクされている場合があります。私が実装したいのは、いくつかのキーワードを選択し、keyword1、keyword2などに接続するための要件に一致するノードがあるかどうかを確認する方法です。ファセット検索の主な目的である別名を実行したくありません。可能性の数を表示し、他の可能性と一致する結果が0の場合はクエリを実行できないようにします。この「単純な」クエリを実行できるようにしたいだけです。私はNeo4Jの世界ではまったく新しいので、以前に答えを見つけようとしましたが、概念的なものが不足しているため、正しい投稿を見逃した可能性があることを覚えておいてください。

だから、これが私が試したクエリです:

    START 
    facet1 = node:entities("__ID__:keyword-104"),
    facet2 = node:entities("__ID__:place-1"),
    facet3 = node:entities("__ID__:keyword-2"),
    facet4 = node:entities("__ID__:keyword-258")
MATCH
    (elem)<-[:hasLinkTarget]-(link)-[:hasLinkTarget]->(facet1),
    (elem)<-[:hasLinkTarget]-(link)-[:hasLinkTarget]->(facet2),
    (elem)<-[:hasLinkTarget]-(link)-[:hasLinkTarget]->(facet3),
    (elem)<-[:hasLinkTarget]-(link)-[:hasLinkTarget]->(facet4)
WITH distinct elem, facet1, facet2, facet3, facet4, link
RETURN elem

明確なものの有無にかかわらず、それは時間がかかり、基本的に時々クラッシュします。キーワードが2つしかない場合は、うまく機能します(<100ミリ秒)。3つは長く、4つはクラッシュします(多かれ少なかれ)。外部サービスを使用せずにそれを行う方法を見つける必要があります(アップグレードの理由から、ここではsolrはオプションではありません)。

私が添付した写真を考えると、私が欲しいのは、リンクを介してキーワード1,4,5,3に添付された#1のようなdocumentaryUnitを見つけることです。私もコレクションを試してみました、そうします:

START doc = node:entities("__ISA__:documentaryUnit")
MATCH (doc)<-[:hasLinkTarget]-(link)-[:hasLinkTarget]->(accessPoints)
WITH collect(accessPoints.__ID__) AS accessPointsId, doc
WHERE ALL (x IN ['keyword-104', 'place-1', 'keyword-2']
           WHERE x IN accessPointsId)
RETURN doc.__ID__

これはクラッシュしませんが、開始エントリポイントとして多くのベースノードを取ります。1000ミリ秒から2000ミリ秒かかります。

これを読んでいただきありがとうございます、あなたが何かを投稿したらできるだけ早く返信します

BridgeIneptique

2つの解決策。最良のもの(キャッシュの場合は約500ミリ秒、その後は270ミリ秒):

START 
    accessPoints = node:entities("__ID__:kw-1 OR __ID__:kw-2 OR __ID__:kw-3 OR __ID__:kw-4")
MATCH 
    (doc)<-[:hasLinkTarget]-(link)-[:hasLinkTarget]->accessPoints
WHERE doc.__ISA__ = "documentaryUnit"
WITH collect(accessPoints.__ID__) AS accessPointsId, doc
WHERE ALL (x IN ['kw-1', 'kw-2', 'kw-3', 'kw-4']
           WHERE x IN accessPointsId)
RETURN doc

2番目のものは5000msと400ms後

START 
    facet1 = node:entities("__ID__:kw-1"),
    facet2 = node:entities("__ID__:kw-2"),
    facet3 = node:entities("__ID__:kw-3"),
    facet4 = node:entities("__ID__:kw-4")
MATCH
    (elem)<-[:hasLinkTarget]-()-[:hasLinkTarget]->facet1,
    (elem)<-[:hasLinkTarget]-()-[:hasLinkTarget]->facet2,
    (elem)<-[:hasLinkTarget]-()-[:hasLinkTarget]->facet3,
    (elem)<-[:hasLinkTarget]-()-[:hasLinkTarget]->facet4
WHERE elem.__ISA__ = "documentaryUnit"
RETURN elem

括弧を削除すると、応答が速くなりました。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

NEO4j:検索暗号クエリの最適化

分類Dev

Neo4j 3.1.2は、暗号の正規表現検索でインデックスを使用しますか?

分類Dev

複数のマージによるneo4jクエリの最適化

分類Dev

Neo4j:暗号シェルから複数のスクリプトファイルを実行する

分類Dev

複数のインターネット接続を介して暗号化されたパケットトラフィックを最適化する方法はありますか?

分類Dev

Neo4jクエリの最適化

分類Dev

関係の作成を含むneo4jクエリの最適化

分類Dev

暗号でのバッチ処理またはNeo4jブラウザーから複数のファイルをアップロードする

分類Dev

Neo4jは不明な数のプロパティを検索します

分類Dev

複数のリストのインデックスに対するIF / ELIF検索を高速化しますか?

分類Dev

neo4jクエリを最適化するにはどうすればよいですか。Neoj4は次の警告を表示します:「このクエリは切断されたパターン間でデカルト積を構築します」

分類Dev

複数の検索条件に対する検索クエリの最適化

分類Dev

neo4j:Javaでの暗号クエリはフィードバックを提供しません

分類Dev

neo4j cypherクエリは、特定のパスを除くすべての子を検索します

分類Dev

neo4jのjsonファイルから複数のラベルとリレーションシップをインポートして作成する

分類Dev

サイファー-「STARTSWITH」を使用して複数のNeo4jノードプロパティフラグメントをクエリする方法

分類Dev

複数のパターンを持つ複数のgzipファイルを解析するbashスクリプトを最適化する方法は?

分類Dev

Neo4j / Cypher-指定された親にのみリンクするノードを検索します

分類Dev

neo4jはリンクリストのノードを削除します

分類Dev

Neo4jのタイムツリーに従って最初/最後のイベントを検索します

分類Dev

Python Neo4jは、複数の一致クエリの単一クエリでカウントを取得します

分類Dev

テキストを検索するクエリの最適化

分類Dev

MongoDbで複合インデックス検索を最適化するためのアルゴリズム

分類Dev

Neo4j javascript-Session.run()-セッションで複数のクエリを実行する方法

分類Dev

BASHスクリプトでファイル内のテキストを検索/検索するための最良の/最適化された方法

分類Dev

Neo4jの最適化:選択したノードから選択したノードまでのすべてのグラフをクエリします

分類Dev

neo4j暗号クエリの高速化

分類Dev

HTMLマークアップを使用したリッチテキストでのNeo4jの全文検索

分類Dev

Azure検索-複数のファセット検索を実装する方法は?

Related 関連記事

  1. 1

    NEO4j:検索暗号クエリの最適化

  2. 2

    Neo4j 3.1.2は、暗号の正規表現検索でインデックスを使用しますか?

  3. 3

    複数のマージによるneo4jクエリの最適化

  4. 4

    Neo4j:暗号シェルから複数のスクリプトファイルを実行する

  5. 5

    複数のインターネット接続を介して暗号化されたパケットトラフィックを最適化する方法はありますか?

  6. 6

    Neo4jクエリの最適化

  7. 7

    関係の作成を含むneo4jクエリの最適化

  8. 8

    暗号でのバッチ処理またはNeo4jブラウザーから複数のファイルをアップロードする

  9. 9

    Neo4jは不明な数のプロパティを検索します

  10. 10

    複数のリストのインデックスに対するIF / ELIF検索を高速化しますか?

  11. 11

    neo4jクエリを最適化するにはどうすればよいですか。Neoj4は次の警告を表示します:「このクエリは切断されたパターン間でデカルト積を構築します」

  12. 12

    複数の検索条件に対する検索クエリの最適化

  13. 13

    neo4j:Javaでの暗号クエリはフィードバックを提供しません

  14. 14

    neo4j cypherクエリは、特定のパスを除くすべての子を検索します

  15. 15

    neo4jのjsonファイルから複数のラベルとリレーションシップをインポートして作成する

  16. 16

    サイファー-「STARTSWITH」を使用して複数のNeo4jノードプロパティフラグメントをクエリする方法

  17. 17

    複数のパターンを持つ複数のgzipファイルを解析するbashスクリプトを最適化する方法は?

  18. 18

    Neo4j / Cypher-指定された親にのみリンクするノードを検索します

  19. 19

    neo4jはリンクリストのノードを削除します

  20. 20

    Neo4jのタイムツリーに従って最初/最後のイベントを検索します

  21. 21

    Python Neo4jは、複数の一致クエリの単一クエリでカウントを取得します

  22. 22

    テキストを検索するクエリの最適化

  23. 23

    MongoDbで複合インデックス検索を最適化するためのアルゴリズム

  24. 24

    Neo4j javascript-Session.run()-セッションで複数のクエリを実行する方法

  25. 25

    BASHスクリプトでファイル内のテキストを検索/検索するための最良の/最適化された方法

  26. 26

    Neo4jの最適化:選択したノードから選択したノードまでのすべてのグラフをクエリします

  27. 27

    neo4j暗号クエリの高速化

  28. 28

    HTMLマークアップを使用したリッチテキストでのNeo4jの全文検索

  29. 29

    Azure検索-複数のファセット検索を実装する方法は?

ホットタグ

アーカイブ