2010-05-16 79 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的前或后调用命令::打开()?

事先调用它肯定有效。