2011-07-28 26 views
1

我正在開發一個由另一個開發人員創建的舊的大型網站。他用的Lucene作爲引擎的網站搜索,索引在其完整的HTML表單中的所有網頁:(爲了清楚省略了一些部件)從Lucene索引中排除頁腳,標題和導航?

$this->index = Zend_Search_Lucene::open($path); 
$html = file_get_contents($document["path"]); 
$doc = Zend_Search_Lucene_Document_Html::loadHTML($html); 
$doc->addField(Zend_Search_Lucene_Field::Text('url', $document["path"])); 
$this->index->addDocument($doc); 

的問題是,網站導航,頁腳和頁眉獲得索引以及 - 搜索「版權」會返回每一頁。

索引完整的HTML內容時,是否有某些開關可以翻轉?我沒有使用過Lucene的經驗,但如果沒有辦法排除每個頁面上的元素,索引整個頁面似乎毫無用處。或者我應該重寫搜索來索引數據庫中的內容,而不是通過HTTP循環訪問它?

回答

1

參考Delve inside the Lucene indexing mechanism,我會說,謹慎的做法是隻存儲在Lucene的文本信息,而不是整個HTML。

如果你有直接訪問數據庫,存儲列數據爲「字段」將爲你提供在搜索更細粒度的控制(例如,在這些領域進行布爾和範圍查詢)。

+0

如此看來,使用字段直接從數據庫顯然是要走的路。感謝您的建議和非常啓發性的鏈接! – Kaivosukeltaja