国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站怎么做下載連接/百度長尾關(guān)鍵詞挖掘

網(wǎng)站怎么做下載連接,百度長尾關(guān)鍵詞挖掘,做網(wǎng)站靠廣告能賺錢嗎,廈門門戶網(wǎng)站制作服務(wù)商Neo4j的全文索引是基于Lucene實現(xiàn)的,但是Lucene默認(rèn)情況下只提供了基于英文的分詞器,下篇文章我們在討論中文分詞器(IK)的引用,本篇默認(rèn)基于英文分詞來做。我們前邊文章就舉例說明過,比如我要搜索蘋果公司&…

Neo4j的全文索引是基于Lucene實現(xiàn)的,但是Lucene默認(rèn)情況下只提供了基于英文的分詞器,下篇文章我們在討論中文分詞器(IK)的引用,本篇默認(rèn)基于英文分詞來做。我們前邊文章就舉例說明過,比如我要搜索蘋果公司?首先我們要做的第一步在各個詞條上創(chuàng)建全文索引,第二步我們根據(jù)蘋果公司進(jìn)行全文檢索,把匹配度高的按順序輸出。下邊我們一步步講解怎么做。

# Neo4j的全文索引采用Lucene,能夠?qū)eo4j中string類型的屬性建立全文索引。- 1. 能夠同時為node和relationship的屬性建立索引。而neo4j內(nèi)嵌的索引僅能夠?qū)ode的屬性建立索引。
- 2. 至于字符串如何被切分和索引,取決于為lucene配置的analyzer。支持自定義Analyzer,包括lucene中沒有提供的。
- 3. 能夠用lucene查詢語句進(jìn)行查詢;
- 4. 能夠返回相似度score;
- 5. 能夠隨著節(jié)點和關(guān)系的添加、移除、修改進(jìn)行自動的更新;
- 6. 自動檢查一致性,如果有不一致的問題自動重建;
- 7. 在單個索引中,能夠支持任意數(shù)目的文檔;
- 8. 創(chuàng)建、刪除、更新都是事務(wù)的,能夠在集群中自動進(jìn)行副本;
- 9. 能夠通過cypher語句訪問.
- 10. 能夠配置為滿足最終一致性。即,索引更新在提交路徑中被移除,轉(zhuǎn)為后臺線程。利用此特性,對于性能要求高的場景,能夠消除主要的寫瓶頸。# 相比于Neo4j內(nèi)嵌的索引,采用Lucene索引具有如下優(yōu)勢:- 1. neo4j的內(nèi)嵌索引采用b樹,其僅能夠?qū)TARTS WITH、ENDS WITH、完全相等三種條件起作用。而lucene建立的全文索引能夠?qū)θ我馄蔚淖址M(jìn)行查詢。
- 2. lucene索引能夠?qū)Χ鄠€label建立.
- 3. lucene索引能夠?qū)σ坏蕉鄠€關(guān)系建立.
- 4. 能夠同時應(yīng)用于多個屬性。與內(nèi)嵌索引的Composite Index不同。Composite Index僅對滿足label且同時具有所有屬性的實體起作用,而全文索引則對至少滿足一個label、關(guān)系類型、屬性的節(jié)點或關(guān)系起作用.

1. call和yield的用法

首先看看這兩個詞的用方法。CALL語句用于調(diào)用數(shù)據(jù)庫中的過程(Procedure),YIELD子句用于顯示的選擇返回結(jié)果集中的哪些部分并綁定到一個變量以供后續(xù)查詢引用。簡單說就是用call來調(diào)用函數(shù),用yield來接收函數(shù)返回的結(jié)果。我們舉個例子

call db.labels() yield label
return count(label) as num

這里是調(diào)用數(shù)據(jù)庫中內(nèi)嵌的過程db.labels()計算數(shù)據(jù)庫中的總標(biāo)簽數(shù)。返回結(jié)果

2. 索引

在Neo4j中,有兩種不同的索引類型:B-樹和全文索引

可以使用Cypher創(chuàng)建和刪除B-樹索引。用戶通常不必知道索引就可以使用它,因為Cypher的查詢計劃器會決定在哪種情況下使用哪個索引。B-樹索引擅長于對所有類型的值進(jìn)行精確查找,以及范圍掃描,完整掃描和前綴搜索。比如(=,>,start with,contains)等

全文索引與B-樹索引不同,它們針對索引和搜索文本進(jìn)行了優(yōu)化。它們用于需要理解語言的查詢,并且僅索引字符串?dāng)?shù)據(jù)。還必須通過過程明確查詢它們。全文索引需要手動去創(chuàng)建它,查詢的時候也是手動去調(diào)用。

在理解了索引的兩種概念后,我們著手看看全文索引怎么創(chuàng)建。

3. 創(chuàng)建全文索引

在第一節(jié)中用到了db.labels()的過程,那有沒有內(nèi)置創(chuàng)建全文索引的過程呢。答案當(dāng)然是有了。會發(fā)現(xiàn)有db.index.fulltext.createNodeIndex(),那就用這個過程來開始創(chuàng)建一個全文索引。在Dao層代碼如下,其中創(chuàng)建索引的名稱,標(biāo)簽和字段通過動態(tài)傳參傳過去的,比如在公司,產(chǎn)品上創(chuàng)建公司名稱,產(chǎn)品名稱的全文索引名稱為allFullIndex

可以手動從CQL查詢界面進(jìn)行創(chuàng)建

比如從GoodDes標(biāo)簽的name上創(chuàng)建全文索引, 并使用cjk分詞器

CALL db.index.fulltext.createNodeIndex("FT_GOODDES",["GoodDes"],["name"],{analyzer:"cjk", eventually_consistent:"true"})CALL db.index.fulltext.queryNodes("FT_GOODDES", "氣體導(dǎo)流管(舊)") YIELD node, score
WHERE score > 0.6
MATCH (node)-[:GoodAndCode]->(goodCode:GoodCode)
RETURN ID(node) AS nodeId, node.name AS goodDesName, score, ID(goodCode) AS goodCodeId, goodCode.code AS goodCodeCode;

@Repository
public interface FullIndexRepository extends Neo4jRepository<CompanyEntryNode, String> {/*** 創(chuàng)建索引** @param indexName  索引名稱* @param labels     標(biāo)簽名稱* @param properties 屬性*/@Query("call db.index.fulltext.createNodeIndex({indexName},{labels},{properties})")void createFullIndex(String indexName, String[] labels, String[] properties);/*** 刪除索引** @param indexName 索引名稱*/@Query("call db.index.fulltext.drop({indexName})")void deleteFullIndexByName(String indexName);
}

service層和controller層就不寫了,直接調(diào)用我們創(chuàng)建的過程,就成功創(chuàng)建了一個名稱為allFullIndex的全文索引。

在這里插入圖片描述

4. 查詢索引

同樣的有創(chuàng)建索引的過程,也有查詢?nèi)乃饕倪^程db.index.fulltext.queryNodes(),那我們在dao層做如下定義。這里結(jié)果中返回了node和score。score就是按照相似度給出的一個分值,分詞器會影響這個分值,node就是創(chuàng)建索引的節(jié)點信息。結(jié)果默認(rèn)是按照score數(shù)值從高到低返回。


@Repository
public interface BaseSearchRepository extends Neo4jRepository<CompanyEntryNode, String> {/*** 查詢?nèi)臋z索數(shù)據(jù)** @param searchWord* @return*/@Query("call db.index.fulltext.queryNodes('allFullIndex',{searchWord}) yield node,score " +"return node.name as name,score")List<BaseSearchDto> fullTextSearch( String searchWord);}

在controller層中我們調(diào)用會返回如下結(jié)果

在這里插入圖片描述

這樣整個全文索引的創(chuàng)建和查詢就完成了。

5. 其他調(diào)用過程 [一]

db.index.fulltext.drop()

描述刪除指定的索引。
用法db.index.fulltext.drop(indexName :: STRING?) :: VOID

db.index.fulltext.createNodeIndex()

描述為給定的標(biāo)簽和屬性創(chuàng)建節(jié)點全文索引??蛇x的“ config”映射參數(shù)可用于為索引提供設(shè)置。支持的設(shè)置是“分析器”,用于指定在建立索引和查詢時要使用的分析器。使用以下db.index.fulltext.listAvailableAnalyzers步驟查看可用的選項??梢詫ⅰ痚ventually_consistent’設(shè)置為’true’,以使該索引最終保持一致,從而將來自提交事務(wù)的更新應(yīng)用于后臺線程。
語法db.index.fulltext.createNodeIndex(indexName :: STRING?, labels :: LIST? OF STRING?, properties :: LIST? OF STRING?, config = {} :: MAP?) :: VOID

db.index.fulltext.createRelationshipIndex()

描述查詢給定的全文索引。返回匹配關(guān)系及其Lucene查詢分?jǐn)?shù),按分?jǐn)?shù)排序。選項映射的有效鍵是:'skip’跳過前N個結(jié)果;'limit’限制返回的結(jié)果數(shù)。
用法`db.index.fulltext.queryRelationships(indexName :: STRING?, queryString :: STRING?, options = {} :: MAP?) :: (relationship :: RELATIONSHIP?, score :: FLOAT?)```

db.index.fulltext.queryRelationships()

描述為給定的關(guān)系類型和屬性創(chuàng)建一個關(guān)系全文本索引??蛇x的“ config”映射參數(shù)可用于為索引提供設(shè)置。支持的設(shè)置是“分析器”,用于指定在建立索引和查詢時要使用的分析器。使用以下db.index.fulltext.listAvailableAnalyzers步驟查看可用的選項。可以將’eventually_consistent’設(shè)置為’true’,以使該索引最終保持一致,從而將來自提交事務(wù)的更新應(yīng)用于后臺線程。
用法db.index.fulltext.createRelationshipIndex(indexName :: STRING?, relationshipTypes :: LIST? OF STRING?, properties :: LIST? OF STRING?, config = {} :: MAP?) :: VOID

db.index.fulltext.queryNodes()

描述查詢給定的全文索引。返回匹配的節(jié)點及其Lucene查詢分?jǐn)?shù),按分?jǐn)?shù)排序。選項映射的有效鍵是:'skip’跳過前N個結(jié)果;'limit’限制返回的結(jié)果數(shù)。
用法db.index.fulltext.queryNodes(indexName :: STRING?, queryString :: STRING?, options = {} :: MAP?) :: (node :: NODE?, score :: FLOAT?)

db.index.fulltext.listAvailableAnalyzers()

描述列出可以配置全文本索引的可用分析器。
用法db.index.fulltext.listAvailableAnalyzers() :: (analyzer :: STRING?, description :: STRING?, stopwords :: LIST? OF STRING?)

6. 其他調(diào)用過程 [二]

https://blog.csdn.net/xiaqingyin/article/details/105567306

在這里插入圖片描述

7. 舉例 - 創(chuàng)建和配置、查詢、刪除全文索引

使用全文索引進(jìn)行創(chuàng)建

例如,想要對于Label為Movie和Book的節(jié)點創(chuàng)建索引,索引的字段包括title和description。則采用如下cypher語句。

CALL db.index.fulltext.createNodeIndex("titlesAndDescriptions",["Movie", "Book"],["title", "description"])

想要使用以上索引搜索標(biāo)題或者描述中包含“matrix”的節(jié)點,調(diào)用如下cypher語句。

CALL db.index.fulltext.queryNodes("titlesAndDescriptions", "matrix") YIELD node, score
RETURN node.title, node.description, score

創(chuàng)建關(guān)系索引,以及可選參數(shù)config的使用。

CALL db.index.fulltext.createRelationshipIndex("taggedByRelationshipIndex",["TAGGED_AS"],["taggedByUser"], { analyzer: "url_or_email", eventually_consistent: "true" })

使用全文索引進(jìn)行查詢

CALL db.index.fulltext.queryNodes("titlesAndDescriptions", "Full Metal Jacket") YIELD node, score
RETURN node.title, score

可以用Lucene的全文檢索語法,例如,如果需要完全匹配,則加雙引號

CALL db.index.fulltext.queryNodes("titlesAndDescriptions", "\"Full Metal Jacket\"") YIELD node, score
RETURN node.title, score

可以使用邏輯操作符,例如AND OR

CALL db.index.fulltext.queryNodes("titlesAndDescriptions", 'full AND metal') YIELD node, score
RETURN node.title, score

還可以對指定的屬性進(jìn)行查詢。

CALL db.index.fulltext.queryNodes("titlesAndDescriptions", 'description:"surreal adventure"') YIELD node, score
RETURN node.title, node.description, score

刪除全文索引

CALL db.index.fulltext.drop("taggedByRelationshipIndex")

8. 全文檢索之中文分詞器

其實用了這么久,我感覺用不用中文的全文索引影響不是很大

說說二種方式實現(xiàn)中文全文索引的創(chuàng)建。

1). 利用系統(tǒng)自帶的分詞器

我們在創(chuàng)建全文索引函數(shù)的時候是可以指定索引的分詞器的,他的分詞器可用下邊的方式查詢:

call db.index.fulltext.listAvailableAnalyzers

在這里插入圖片描述

查到很多系統(tǒng)自帶的分詞器,其中有一個是“cjk”是針對中國,日本,韓國做的分詞器,所以說是支持中文分詞的。所以可以這樣建索引,像下邊指定analyzer的類型為“cjk”就指定的分詞器的類型。

CALL db.index.fulltext.createNodeIndex("companyFullIndex",["CompanyEntry"],["name"], { analyzer: "cjk"}

2). 通過第三方庫來創(chuàng)建全文索引

參考https://zhuanlan.zhihu.com/p/364927850

未驗證

通過查找有第三方庫neo4j-graph-plugin-1.0.1.jar,這個不確定是不是官方的還是別人提供的,git下載地址:

https://github.com/crazyyanchao/ongdb-lab-apoc

下載neo4j-graph-plugin-1.0.1.jar文件,放到neo4j的plugins目錄下,該插件對應(yīng)的ik版本為:IKAnalyzer-5.0,支持LUCENE-5.5.0。修改配置文件,然后重啟neo4j服務(wù)。

dbms.security.procedures.unrestricted=apoc.*,zdr.*

安裝好后執(zhí)行,如果不報錯,表示安裝成功。初次會失敗!

RETURN zdr.apoc.hello("你好") as greeting

運行函數(shù)zdr.index.iKAnalyzer會報莫名其妙的錯誤,經(jīng)過測試需要繼續(xù)從https://github.com/crazyyanchao/neo4j-graph-plugin下載neo4j-graph-plugin-master.zip文件,解壓縮后取出其中的dic目錄拷貝到neo4j根目錄下,否則一直運行失敗,因為他需要找分詞文件目錄,和java中引用IK分詞一樣。dic目錄下的分詞文件user_defined.dic可以添加自定義的分詞。如果想修改用戶自定義詞典的位置,可以修改配置文件:

vim dic/dic-cfg/IKAnalyzer.cfg.xml

在這里插入圖片描述

以上配置好了之后創(chuàng)建中文索引,CompanyFullIndex是索引名稱,CompanyEntry是節(jié)點。

CALL zdr.index.addChineseFulltextIndex('CompanyFullIndex', ["name"], 'CompanyEntry') YIELD message RETURN message

這里的語法和系統(tǒng)庫里的稍微參數(shù)位置不一樣,其他邏輯都是一樣的。查詢的方法如下。

CALL zdr.index.chineseFulltextIndexSearch('CompanyFullIndex', 'name:測試~') YIELD node RETURN node
http://m.aloenet.com.cn/news/261.html

相關(guān)文章:

  • 網(wǎng)站彈窗客服代碼/刷推廣鏈接
  • 政府網(wǎng)站公眾號建設(shè)方案/谷歌瀏覽器 安卓下載2023版
  • wordpress tutorial/seo優(yōu)化排名服務(wù)
  • 網(wǎng)站被谷歌降權(quán)/廣州seo招聘網(wǎng)
  • 網(wǎng)站聊天怎么做/最新軍事報道
  • 成都微信端網(wǎng)站建/蘇州seo按天扣費
  • 網(wǎng)站沒有百度快照/全網(wǎng)絡(luò)品牌推廣
  • 制作企業(yè)網(wǎng)站需要注意的事項/地推是什么
  • 資料填寫網(wǎng)站類型怎么做/新聞發(fā)稿公司
  • 免費建網(wǎng)站撫順/win10優(yōu)化大師有用嗎
  • 萬盛網(wǎng)站建設(shè)公司/當(dāng)下最流行的營銷方式
  • 下載好看影視大全極速版/seo是什么工作內(nèi)容
  • 重慶響應(yīng)式網(wǎng)站建設(shè)公司/哪個軟件可以自動排名
  • python源碼分享網(wǎng)站/深度搜索
  • 龍華網(wǎng)站建設(shè)方案表/免費海報模板網(wǎng)站
  • 關(guān)鍵詞seo優(yōu)化/優(yōu)化大師官方免費下載
  • 百度指數(shù) 網(wǎng)站/杭州優(yōu)化公司哪家好
  • 哈爾濱市建設(shè)網(wǎng)站/寧波網(wǎng)絡(luò)推廣產(chǎn)品服務(wù)
  • 湛江網(wǎng)站建設(shè)哪家好/網(wǎng)絡(luò)營銷公司全網(wǎng)推廣公司
  • 個人可以做淘寶客網(wǎng)站嗎/網(wǎng)絡(luò)營銷首先要進(jìn)行
  • 免費制作單頁的網(wǎng)站/媒體推廣
  • 嘉興網(wǎng)站搭建/軟文發(fā)布平臺哪個好
  • 專做品牌的網(wǎng)站/seo專員招聘
  • 怎么在網(wǎng)站里做關(guān)鍵詞優(yōu)化/小程序開發(fā)多少錢
  • 上海公司網(wǎng)站開發(fā)/互聯(lián)網(wǎng)運營培訓(xùn)課程
  • 外貿(mào)網(wǎng)站建設(shè)內(nèi)容包括哪些/軟文推廣去哪個平臺好
  • 圖書館網(wǎng)站建設(shè)背景/優(yōu)化seo可以從以下幾個方面進(jìn)行
  • 有效的網(wǎng)站建設(shè)公司/seo黑帽教程視頻
  • 工業(yè)和信息化部網(wǎng)站備案系統(tǒng)是什么意思/企業(yè)短視頻推廣
  • 廣東建設(shè)企業(yè)網(wǎng)站哪家好/網(wǎng)頁設(shè)計與制作書籍