2010-05-16 90 views
6

使用Zend Lucene的,我不能在描述字段搜索號Zend的Lucene的 - 不能搜索數字

增加這樣的:

$doc->addField(Zend_Search_Lucene_Field::Text('description', $current_item['item_short_description'], 'utf-8')); 

谷歌搜索這表明,施用下面的代碼就可以解決這個問題,但它沒有..:

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive()); 

any thougts?

回答

8

您必須設置默認分析儀兩次:關於索引過程以及搜索過程。

從上面使用的代碼行:

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive()); 
0

我不知道'Zend的,但對於應對Lucene的號碼,則需要使用以下方法:

  • 要放置INT以下記錄使用:

    document.Add (新字段(FIELD_SPEC,NumberTools.LongToString(YOUR_INT),Field.Store.YES,Field.Index.UN_TOKENIZED));

  • 要查找值使用期限:期限(FIELD_SPEC,NumberTools.LongToString(YOUR_INT))

+0

如何用它來描述?我想讓描述內的數字可以搜索。我不只是有一個「分離整數」。 – 2010-05-17 06:45:05

+0

@Pavel Dubinin - 看看我的筆記:「定位值使用術語:...」因此,當您需要搜索時,將其創建爲BooleanQuery的一部分,其中Term使用NumberTools構建。如果你使用標準的qury解析器,有點複雜 - 在這種情況下,通過用查詢值替換查詢中的所有數字來進行預處理。NumberTools – Dewfy 2010-06-25 13:31:28

1

你使用Zend_Search_Lucene的前或後調用命令::打開()?

事先調用它肯定有效。