Neo4j全文検索

フルテキスト検索の基本的な考え方

  • 検索
    この振る舞いを検索する検索エンジンを持つプロセスのユーザーとの対話で、あなたには、いくつかのデータを見つける必要があり、彼は制約を介してユーザに結果の一部を抽出するために、検索エンジンの検索エンジンに制約の数を提供しました
  • 検索エンジンは
    、エンジンの店舗を検索見つけると検索エンジンをされて使用してデータを取得するために存在し.Neo4jLucene
  • 文書
    検索ソフトウェアは、文書は、文書がデータベース内のデータの単純列として理解することができる。保存、検索、表示文書をコアに基づいている。第一級市民であるが、このデータの行は、フィールド名を含みます。
  • 転置インデックス
    逆インデックス検索エンジンは、コアデータ構造である。要するに、すべての文書は、語彙の背後にあるブックのようなものになるだろう。すぐにこのデータ構造からWord文書を見つけることができます
  • Lucene検索構文
クエリの実装 目的
TermQuery Wordのマッチ Neo4j
PhraseQuery フレーズ一致 「グラフデータベース」
RangeQuery レンジマッチング [ZにA] {AからZ}
WildcardQuery 定期的な試合 G * pを?D?ABASE
PrefixQuery プレフィックス一致 何か*
FuzzyQuery サフィックス一致 暗号〜
BooleanQuery クエリ重合 グラフと「最短経路」

環境の準備

  • コンテナのNeo4jを開始します
    docker run -p 17687:7687 -p 17474:7474 --name=neo4j-test neo4j:3.5.3
  • テストデータを使用して、データを作成します。
    :play northwind-graph

Neo4j全文検索

Neo4jフルテキスト検索は、以下のような特徴を持っていますが、私が感じるダウンが最も重要であるとindex文を作成するために、実際にはコントロールに名前を付けるために設立されました。のNeo4jを最初から2.2.xの時代にデフォルトにnode_auto_indexing=true。データ挿入時の転置インデックスが作成されました。/コストのインデックスを削除するインデックスを作成することは非常に小さいです

  • ノードでサポート指数の関係
  • これは、人気のサポートanalyzersの拡張機能を
  • あなたは使用することができますlucene queryステートメントを
  • 評価は、クエリ結果を返すことができます
  • インデックスの自動更新
  • 文書の任意の単一のインデックス番号

インデックスの作成と削除

2つのインデックス、1つの確立Productラベルのインデックス。また、フルテキスト検索索引の完全なデータベース

call db.index.fulltext.createNodeIndex("all",['Product', 'Category', 'Supplier'],['reorderLevel', 'unitsInStock', 'unitPrice', 'supplierID', 'productID', 'discontinued', 'quantityPerUnit', 'categoryID', 'unitsOnOrder', 'productName', 'description', 'categoryName', 'picture', 'country', 'address', 'contactTitle', 'city', 'phone', 'contactName', 'postalCode', 'companyName', 'fax', 'region', 'homePage'])

call db.index.fulltext.createNodeIndex("product",['Product'],['reorderLevel', 'unitsInStock', 'unitPrice', 'supplierID', 'productID', 'quantityPerUnit', 'discontinued', 'productName', 'unitsOnOrder', 'categoryID'])

インデックスの削除

call db.index.fulltext.drop("all")

あなたは、関数を使用して、すべてのタグと属性を取得することができます

call db.propertyKeys
call db.labels

お問い合わせ

非常に単純なクエリがあります。ただ、声明は、ほとんどのシーンに対処できるようになることを覚えておいてください

call db.index.fulltext.queryNodes(
    'all',        //这里索引名
    'Av'          // lucene查询语句
) yield node
where node.address contains "12"   // where语句
return node 
order by node.address  // order skip limit
skip 0
limit 1

フルテキスト検索の基本的な考え方

  • 検索
    この振る舞いを検索する検索エンジンを持つプロセスのユーザーとの対話で、あなたには、いくつかのデータを見つける必要があり、彼は制約を介してユーザに結果の一部を抽出するために、検索エンジンの検索エンジンに制約の数を提供しました
  • 検索エンジンは
    、エンジンの店舗を検索見つけると検索エンジンをされて使用してデータを取得するために存在し.Neo4jLucene
  • 文書
    検索ソフトウェアは、文書は、文書がデータベース内のデータの単純列として理解することができる。保存、検索、表示文書をコアに基づいている。第一級市民であるが、このデータの行は、フィールド名を含みます。
  • 転置インデックス
    逆インデックス検索エンジンは、コアデータ構造である。要するに、すべての文書は、語彙の背後にあるブックのようなものになるだろう。すぐにこのデータ構造からWord文書を見つけることができます
  • Lucene検索構文
クエリの実装 目的
TermQuery Wordのマッチ Neo4j
PhraseQuery フレーズ一致 「グラフデータベース」
RangeQuery レンジマッチング [ZにA] {AからZ}
WildcardQuery 定期的な試合 G * pを?D?ABASE
PrefixQuery プレフィックス一致 何か*
FuzzyQuery サフィックス一致 暗号〜
BooleanQuery クエリ重合 グラフと「最短経路」

環境の準備

  • コンテナのNeo4jを開始します
    docker run -p 17687:7687 -p 17474:7474 --name=neo4j-test neo4j:3.5.3
  • テストデータを使用して、データを作成します。
    :play northwind-graph

Neo4j全文検索

Neo4jフルテキスト検索は、以下のような特徴を持っていますが、私が感じるダウンが最も重要であるとindex文を作成するために、実際にはコントロールに名前を付けるために設立されました。のNeo4jを最初から2.2.xの時代にデフォルトにnode_auto_indexing=true。データ挿入時の転置インデックスが作成されました。/コストのインデックスを削除するインデックスを作成することは非常に小さいです

  • ノードでサポート指数の関係
  • これは、人気のサポートanalyzersの拡張機能を
  • あなたは使用することができますlucene queryステートメントを
  • 評価は、クエリ結果を返すことができます
  • インデックスの自動更新
  • 文書の任意の単一のインデックス番号

インデックスの作成と削除

2つのインデックス、1つの確立Productラベルのインデックス。また、フルテキスト検索索引の完全なデータベース

call db.index.fulltext.createNodeIndex("all",['Product', 'Category', 'Supplier'],['reorderLevel', 'unitsInStock', 'unitPrice', 'supplierID', 'productID', 'discontinued', 'quantityPerUnit', 'categoryID', 'unitsOnOrder', 'productName', 'description', 'categoryName', 'picture', 'country', 'address', 'contactTitle', 'city', 'phone', 'contactName', 'postalCode', 'companyName', 'fax', 'region', 'homePage'])

call db.index.fulltext.createNodeIndex("product",['Product'],['reorderLevel', 'unitsInStock', 'unitPrice', 'supplierID', 'productID', 'quantityPerUnit', 'discontinued', 'productName', 'unitsOnOrder', 'categoryID'])

インデックスの削除

call db.index.fulltext.drop("all")

あなたは、関数を使用して、すべてのタグと属性を取得することができます

call db.propertyKeys
call db.labels

お問い合わせ

非常に単純なクエリがあります。ただ、声明は、ほとんどのシーンに対処できるようになることを覚えておいてください

call db.index.fulltext.queryNodes(
    'all',        //这里索引名
    'Av'          // lucene查询语句
) yield node
where node.address contains "12"   // where语句
return node 
order by node.address  // order skip limit
skip 0
limit 1

おすすめ

転載: www.cnblogs.com/jpfss/p/11412409.html