關於 nutch 查詢 收藏

2021-06-15 21:54:07 字數 3790 閱讀 8123

(轉貼,原著未明,望諒解.)

伺服器端的啟動命令(當前目錄是nutch的安裝目錄): bin/nutch server 9999  /indexpath

這樣會在本機的 9999 埠開啟乙個***並預設的是啟動 10個 handle 來接受查詢請求。

indexpath是 伺服器上索引檔案的 物理路徑 ,可以是絕對路徑,也可以是相對路徑,但需要注意能夠在當前目錄下找得到。

在客戶端就是查詢端 ,需要兩步,一:新增或者修改search-servers.txt ,其內容為:

************ port

其中************  是啟動查詢server的伺服器 ip位址(最好別使用網域名稱或主機名稱,除非必要) ;

二:修改 nutch-site.xml

searcher.dir

c:/

如果沒有searcher.dir的配置項,則增加,value 的值是 search-servers.txt 的目錄路徑。

然後就可以啟動了,如果索引沒有問題的話 ,查詢的時候tomcat 會有如下提示資訊:

060908 225520 23 creating new bean

060908 225520 23 searching servers in c:/search-servers.txt

060908 225520 23 client adding server 58.215.74.239:9999

060908 225520 24 client connection to 58.215.74.239:9999: starting

060908 225520 23 stats: 1 servers, 17 segments.

這樣就表示 查詢伺服器和客戶端都正常工作了,就可以查詢到伺服器上的資料了。

一下輸出資訊是我把 searchserver 和tomcat 啟動綁到一起的提示資訊:

這樣在集群的時候通過 web.xml 來配置是否需要啟動 searchserver

public hits search(query query, int numhits,

int maxhitspersite, string dedupfield,

string sortfield, boolean reverse)

這是乙個搜尋請求的入口,關鍵在於構造query ,nutch  預設的搜尋查詢分析器是採用一元分詞的,為了提高查詢精度,所以採用分詞。分詞需要在原始文件索引之前進行一次,經過分詞處理後在索引入庫。在查詢的時候同樣也需要分詞,這點可以在yahoo的搜尋技術文章裡找到更詳細的說明。

numhits 翻頁使用。

maxhitspersite :來自同一host的頁面在搜尋結果中的數量

dedupfield :去除重複的字段

sortfield:排序字段

reverse:是否採用倒序排列結果集

首先說query ,其他的結果引數比較簡單,不作過多說明。

/** parse a query from a string. */

public static query parse(string querystring) throws ioexception

這是nutch的查詢分析器** , 將查詢條件進行分詞處理,此處可以將nutchanalysis.parsequery(string input) 的一元分詞程式更換為自己的分詞演算法。返回的 query  經過封裝 ,主要開放 8個組合查詢方法,下面,我將對這8個方法進行註解:

1、public void addrequiredterm(string term) ,該方法的功能是增加乙個查詢條件 , 查詢的字段是default , 也就是在 basicqueryfilter 中定義的 fields 陣列的 字段 ,效果相當於 and

2、public void addrequiredterm(string term, string field)  指定查詢欄位是 field , 其功能同上,但field必須被載入,否則字段驗證失敗。我在第一次接觸nutch 的時候 曾試圖修改**來載入 field , 發現其複雜程度超過想象,後來改用外掛程式的方式,竟然很容易就解決了,所以,增加自定義的查詢字段,外掛程式是最好的方法。

3、public void addprohibitedterm(string term) 增加乙個查詢條件,欄位是default , 效果相當於 not

4、public void addprohibitedterm(string term, string field)  指定查詢欄位是field ,其功能同上。

5、public void addrequiredphrase(string terms) , 增加乙個查詢條件,相當於and,陣列terms之間的關係是or

6、public void addrequiredphrase(string terms, string field) , 指定查詢欄位是 field,其功能同上

7、public void addprohibitedphrase(string terms) , 效果相當於not,terms之間的關係是 or,既限制搜尋結果中不包含 terms中的任何乙個。

8、public void addprohibitedphrase(string terms, string field) , 指定查詢字段 field  ,其功能同上

mongo查詢語法收藏

查詢表示式 含義 mongo 原生查詢條件 neq 或者ne 不等於 ne lt 小於 lt lte 或者elt 小於等於 lte gt 大於 gt gte 或者egt 大於等於 gte like 模糊查詢 用mongoregex正則模擬 無 mod取模運算 mod in in查詢 in nin或者...

mongo查詢語法收藏

查詢表示式 含義 mongo原生查詢條件 neq 或者ne 不等於 ne lt小於 ltlte 或者elt 小於等於 lte gt大於 gt gte 或者egt 大於等於 gte like 模糊查詢 用mongoregex正則模擬 無mod 取模運算 mod inin 查詢 in nin或者not ...

關於k分位數 收藏

關於k分位數 收藏 題目 對乙個含有n個元素的集合來說,所謂的k分位數,就是能把已排序的集合分成k個大小相等的集合的 k 1個順序統計量 請給出乙個能求出含有n個元素 無序 的集合的k分位數的o nlgk 時間的演算法。分析 k select a n k if k 0 return m bit se...