1. 程式人生 > >Nutch搜尋引擎(第1期)_ Nutch簡介及安裝

Nutch搜尋引擎(第1期)_ Nutch簡介及安裝

1、Nutch簡介

  Nutch是一個由Java實現的,開放原始碼(open-source)的web搜尋引擎。主要用於收集網頁資料,然後對其進行分析,建立索引,以提供相應的介面來對其網頁資料進行查詢的一套工具。其底層使用了Hadoop來做分散式計算與儲存,索引使用了Solr分散式索引框架來做,Solr是一個開源的全文索引框架,從Nutch 1.3開始,其集成了這個索引架構。

  Nutch目前最新的版本為version1.4。

1.1 Nutch的目標

  Nutch 致力於讓每個人很容易,同時花費很少就可以配置世界一流的Web搜尋引擎。為了完成這一巨集偉的目標,Nutch必須能夠做到:

  • 每個月取幾十億網頁
  • 為這些網頁維護一個索引
  • 對索引檔案進行每秒上千次的搜尋
  • 提供高質量的搜尋結果
  • 以最小的成本運作

1.2 Nutch的優點

  • 透明度

  Nutch開放原始碼的,因此任何人都可以檢視他的排序演算法是如何工作的。商業的搜尋引擎排序演算法都是保密的,我們無法知道為什麼搜尋出來的排序結果是如何算出來的。更進一步,一些搜尋引擎允許競價排名,比如百度,這樣的索引結果並不是和站點內容相關的。因此Nutch對學術搜尋和政府類站點的搜尋來說,是個好選擇。因為一個公平的排序結果是非常重要的。

  • 擴充套件性

  你是不是不喜歡其他的搜尋引擎展現結果的方式呢?那就用 Nutch 寫你自己的搜尋引擎吧。 Nutch 是非常靈活的,他可以被很好的客戶訂製並整合到你的應用程式中。使用Nutch 的外掛機制,Nutch 可以作為一個搜尋不同資訊載體的搜尋平臺。當然,最簡單的就是整合Nutch到你的站點,為你的使用者提供搜尋服務。

  • 對搜尋引擎的理解

  我們並沒有google的原始碼,因此學習搜尋引擎Nutch是個不錯的選擇。瞭解一個大型分散式的搜尋引擎如何工作是一件讓人很受益的事情。在寫Nutch的過程中,從學院派和工業派借鑑了很多知識:比如:Nutch的核心部分目前已經被重新用 Map Reduce 實現了。Map Reduce 是一個分散式的處理模型,最先是從 Google 實驗室提出來的。並且 Nutch 也吸引了很多研究者,他們非常樂於嘗試新的搜尋演算法,因為對Nutch 來說,這是非常容易實現擴充套件的。

1.3 Nutch與Lucene關係

  Lucene是一個Java高效能全文索引引擎工具包可以方便的嵌入到各種實際應用中實現全文索引搜尋功能它提供了一系列API,能夠對文件進行預處理、過濾、分析、索引和檢索排序。在保持高效和簡單的特點之外,還保證了開發者可以自由定製和組合各種核心功能。Nutch是一個應用程式,是一個Lucene為基礎實現搜尋引擎應用LuceneNutch 提供了文字搜尋索引APINutch不僅提供搜尋,而且還有資料抓取的功能。

  簡單的說:

  • Lucene 不是完整的應用程式,而是一個用於實現全文檢索的軟體庫。
  • Nutch 是一個應用程式,可以以 Lucene 為基礎實現搜尋引擎應用。

  一個常見問題是:我應該使用Lucene還是Nutch?

  最簡單的回答是:如果你不需要抓取資料的話,應該使用Lucene

  常見的應用場合是:你有資料來源,需要為這些資料提供一個搜尋頁面。在這種情況下,最好的方式是直接從資料庫中取出資料並用Lucene API建立索引。

  在你沒有本地資料來源,或者資料來源非常分散的情況下,應該使用Nutch

2、Nutch安裝

    我們現在進行的是Nutch的單機版安裝以及配置。

2.1 環境介紹

    本次安裝Nutch的環境介紹:

  • 作業系統:CentOS6.0(機器名:TSlave.Hadoop)
  • JDK版本:jdk-6u31-linux-i586.bin
  • Nutch版本:apache-nutch-1.4-bin.tar.gz
  • Tomcat版本:apache-tomcat-7.0.27.tar.gz

  下面是軟體的下載地址:

    當所需軟體準備好之後,我們用"FTPFlash"軟體把上面上傳到Linux伺服器,為下面準備安裝做好準備。

2.2 安裝JDK

  首先用root身份登入"TSlave.Hadoop:192.168.1.11"後在"/usr"下建立"java"資料夾,再把用FTP上傳到"/home/hadoop/"下的"jdk-6u31-linux-i586.bin"複製到"/usr/java"資料夾中。

mkdir /usr/java

cp /home/hadoop/ jdk-6u31-linux-i586.bin /usr/java

  接著進入"/usr/java"目錄通過下面命令使其JDK獲得可執行許可權,並安裝JDK。

chmod    +x     jdk-6u31-linux-i586.bin

./jdk-6u31-linux-i586.bin

  按照上面幾步進行操作,最後點選"Enter"鍵開始安裝,安裝完會提示你按"Enter"鍵退出,然後檢視"/usr/java"下面會發現多了一個名為"jdk1.6.0_31"資料夾,說明我們的JDK安裝結束,刪除"jdk-6u31-linux-i586.bin"檔案,進入下一個"配置環境變數"環節。

    接著配置JDK環境變數,編輯"/etc/profile"檔案,在後面新增Java的"JAVA_HOME"、"CLASSPATH"以及"PATH"內容。在"/etc/profile"檔案的尾部新增以下內容:

# set java environment

export JAVA_HOME=/usr/java/jdk1.6.0_31

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

    儲存並退出,執行下面命令使其配置立即生效。

source /etc/profile

    最後驗證一下JDK是否安裝成功。

java -version

2.3 安裝Tomcat

    首先進入"/home/hadoop"目錄,把"apache-tomcat-7.0.27.tar.gz"複製到"/usr"下面,然後解壓。

cp /home/hadoop /apache-tomcat-7.0.27.tar.gz /usr

    用下面命令進行解壓Tomcat安裝包。

tar –zxvf apache-tomcat-7.0.27.tar.gz

    解壓完之後,然後刪除安裝包,並對"apache-tomcat-7.0.27"重新命名為"tomcat",把該資料夾授權於普通使用者"hadoop"。

rm -rf apache-tomcat-7.0.27.tar.gz

mv apache-tomcat-7.0.27 tomcat

chown -R hadoop:hadoop tomcat

    接著新增Tomcat環境變數,為了在以後系統啟動後就配置好Tomcat所需的環境變數,要在"/etc/profile"檔案中設定,並用"source /etc/profile"命令使其立即有效。

# set tomcat environment

export CATALINA_HOME=/usr/tomcat

export CATALINA_BASE=/usr/tomcat

export PATH=$PATH:$ CATALINA_HOME /bin

    此時用"reboot"命名重啟電腦,用普通"hadoop"登入Linux系統,執行下面命令啟動我們剛才配置的Tomcat。

startup.sh

    備註別用root使用者使用該命令,因為用最高使用者啟動Tomcat後,會在Tomcat的日誌檔案中生成相應的日誌,但是日誌的建立者是root,此時在轉到普通使用者啟動Tomcat時,由於剛才建立的日誌的使用者是最高使用者,其他使用者無法對這些日誌檔案進行寫,導致啟動tomcat失敗。還有記得把防火牆關掉

    在瀏覽器輸入"192.168.1.11 :8080",檢視是否已經啟動成功。

    額外執行操作,如果埠發生衝突時,或者出現中文亂碼時,修改"server.xml"配置檔案,該檔案位於"/usr/tomcat/conf"目錄下面。

    Apache http伺服器的埠是 80,Apache Tomcat伺服器埠是8080。二者不衝突,若有衝突,修改如下:

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->

<Connector port="8080" maxHttpHeaderSize="8192"

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

enableLookups="false" redirectPort="8443" acceptCount="100"

c disableUploadTimeout="true"

URIEncoding="UTF-8" useBodyEncodingForURI="true" />

  預設服務埠為8080,若有衝突(如Apache),則可通過此配置檔案更改埠(藍色);如果配置後nutch出現中文亂碼問題,則增加編碼配置(紅色)。

2.4 安裝Nutch

    我們用普通使用者"hadoop"把Nutch安裝在"/home/hadoop"下面。用下面命令進行解壓和重名。

tar -zxvf apache-nutch-1.4-bin.tar.gz

mv apache-nutch-1.4-bin nutch

    新增Nutch的環境變數,在"/home/hadoop/.bashrc"檔案中新增如下內容。

# set nutch environment

export NUTCH_HOME=/home/hadoop/nutch

export PATH=$PATH:$ NUTCH _HOME /runtime/local/bin

    新增完之後用"source .bashrc"使其立即生效。

    然後在輸入"nutch"命令測試是否配置成功,結果出現下面錯誤,當然這個錯誤網上說不一定出現。

  這時我們檢視"/home/hadoop/nutch/runtime/local/nutch"這個檔案時發現沒有執行許可權。用下面命令新增執行許可權。

chmod +x nutch

    當給該檔案新增執行許可權後,我們再次檢視,發現該檔案顏色發生了變化,再次執行"nutch"命令時,下面出現了該命名的引數列表。到此為止我們的單機版Nutch已經安裝完畢。

相關推薦

Nutch搜尋引擎2_ Solr簡介安裝

1、Solr簡介   Solr是一個高效能,採用Java5開發,基於Lucene的全文搜尋伺服器。同時對其進行了擴充套件,提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴充套件並對查詢效能進行了優化,並且提供了一個完善的功能管理介面,是一款非常優秀的全文搜尋引擎。   Solr最初由CNET

Nutch搜尋引擎1_ Nutch簡介安裝

1、Nutch簡介   Nutch是一個由Java實現的,開放原始碼(open-source)的web搜尋引擎。主要用於收集網頁資料,然後對其進行分析,建立索引,以提供相應的介面來對其網頁資料進行查詢的一套工具。其底層使用了Hadoop來做分散式計算與儲存,索引使用了Solr分散式索引框架來做,Solr是一

Nutch搜尋引擎3_ Nutch簡單應用

1、Nutch命令詳解 Nutch採用了一種命令的方式進行工作,其命令可以是對區域網方式的單一命令也可以是對整個Web進行爬取的分步命令。 要看Nutch的命令說明,可執行"Nutch"命令。     下面是單個命令的說明: crawl crawl是"org.apache

Nutch搜尋引擎4_ Eclipse開發配置

1、環境準備 1.1 本期引言     前三期分別介紹了Nutch與Solr在Linux上面的安裝,並做了簡單的應用,這一期從開發的角度進行,因為我們日常最熟悉的開發環境是Windows,所以本期詳細介紹Windows平臺的Nutch二次開發所需要進行的配置安裝。當我們開發好之後,最後在部署到Linux環

大數據筆記二十七——Spark Core簡介安裝配置

sin cli sca follow com clu 同時 graphx 信息 1、Spark Core: 類似MapReduce 核心:RDD 2、Spark SQL: 類似Hive,支持SQL 3、Spark Streaming:類似

平安科技移動開發二隊技術周報

移動開發 程序猿 book watch 來看 home 錯誤 去那 this 平安科技移動開發二隊技術周報(第四期) 業界新聞 1)Java 9將於2016年正式公布 Oracle已經宣布了Java 9的時間表。其目標是在2016年9年正式公布

碼農·美妙的數學23pdf

日常 高中生 不可 存在 下載 file style microsoft 家庭教育 下載地址:網盤下載 本期碼農“鮮閱”文章,透過“阿司匹林銷售”案例和“鑰匙與門”遊戲場景,深刻揭示了致使“數學枯燥乏味”的教育根源。不然,“美妙的數學”一定也會帶給你我一段美好的高中生活。

使用寄存器點亮LED1—GPIO功能框圖講解

smbus 其它 block 負載能力 tst 很好 通用 描述 大致 GPIO簡介 GPIO 是通用輸入輸出端口的簡稱,簡單來說就是 STM32 可控制的引腳, STM32 芯片的 GPIO 引腳與外部設備連接起來,從而實現與外部通訊、控制以及數據采集的功能

大資料和雲端計算技術週報8:NoSQL特輯

寫在第8期特輯 “大資料” 三個字事實上是個marketing語言,從技術角度看,包括範圍非常廣。計算、儲存、網路都涉及。 為了滿足眾多同學學習和工作的須要。後面社群依據情況逐漸推出專門的分類集錦。希望大家喜歡! 究竟什麼是NoSQL?公眾號一系列

java小白自己動手開發一個網站之立項1

新手小白,大神們看到什麼問題,請多多指出   MyWeb專案立項     修訂記錄表 修訂人 修訂版本 修訂描述 修訂時間 備註

IPFS官方週報11870天之後的迴歸

距離2016年5月8日IPFS官方部落格釋出第10期週報已經過去了870天,在2年多時間之後,IPFS官博的週報再次啟動,以下就是IPFS官博週報第11期的內容。 歡迎回到IPFS週報! InterPlanetary File System(IPFS,星際檔案系統)是一種新型的,基於內容

使用Navicat的查詢生成器設計SELECT查詢1部分

下載Navicat Premium最新版本 在Navicat for MySQL,PostgreSQL,SQLite,MariaDB和Navicat Premium的Non-Essentials版本中,查詢生成器允許任何人只使用粗略的SQL知識來建立和編輯查詢。在本文中,我們將使用它來編寫一個查

IPFS官方最新週刊19

IPFS週刊第十九期的地址:https://blog.ipfs.io/52-ipfs-weekly-19/ 來源丨×××w.ipfs.cn_中國社群   歡迎來到IPFS週刊   行星際檔案系統(IPFS)是一種新的超媒體分發協議,由內容和身份解決。IPFS支援建立完全分散式應用程式。它旨在

IPFS官方最新週刊20

翻  譯丨IPFS中國社群:IP君 文章來源丨www.ipfs.cn 原文地址丨https://mp.weixin.qq.com/s/-ddMC0w3n8NdIILXtqzjLQ · IPFS週刊第20期的地址:檢視原文 · 歡迎來到IPFS週刊 行星際檔案系統(IPFS)是

霸屏瀏覽器使用說明書1

目錄 目錄 最後更新時間 適用版本 遮蔽詳細 遮蔽顯示 遮蔽按鍵不在列表中的按鍵將被遮蔽 遮蔽功能 安裝 使用 修改配置

IPFS官方週報22

IPFS 週報-22 日期:2018年12月12日 歡迎閱讀IPFS週報! InterPlanetary File System (IPFS,星際檔案系統)是一種新型的,基於內容和身份的,超媒體分發協議。IPFS使得開發完全分散式的應用程式成為可能。它旨在使網路更快、更安全、更開

IPFS官方週報20

IPFS 週報-20 日期:2018年11月27日 歡迎閱讀IPFS週報! InterPlanetary File System (IPFS,星際檔案系統)是一種新型的,基於內容和身份的,超媒體分發協議。IPFS使得開發完全分散式的應用程式成為可能。它旨在使網路更快、更安全、更開

IPFS官方週報19

歡迎閱讀IPFS週報! InterPlanetary File System (IPFS,星際檔案系統)是一種新型的,基於內容和身份的,超媒體分發協議。IPFS使得開發完全分散式的應用程式成為可能。它旨在使網路更快、更安全、更開放。因為這是一個相當大範圍的任務,在這篇週報中,我們跟蹤、彙

IPFS官方週報18

IPFS 週報-18 作者:Jenn Turner 日期:2018年11月13日 歡迎閱讀IPFS週報! InterPlanetary File System (IPFS,星際檔案系統)是一種新型的,基於內容和身份的,超媒體分發協議。IPFS使得開發完全分散式的應用程式成為可能。

IPFS官方週報17

IPFS 週報-17 日期:2018年11月06日 歡迎閱讀IPFS週報! InterPlanetary File System (IPFS,星際檔案系統)是一種新型的,基於內容和身份的,超媒體分發協議。IPFS使得開發完全分散式的應用程式成為可能。它旨在使網路更快、更安全、更開放。因為