如何使用Zend Lucene搜索邮编?
问题描述:
我用这个来创建索引与Zend Lucene的非常简单的公司指数:如何使用Zend Lucene搜索邮编?
// store company primary key to identify it in the search results
$doc->addField(Zend_Search_Lucene_Field::Keyword('pk', $this->getId()));
// index company fields
$doc->addField(Zend_Search_Lucene_Field::Unstored('zipcode', $this->getZipcode(), 'utf-8'));
$doc->addField(Zend_Search_Lucene_Field::Unstored('name', $this->getName(), 'utf-8'));
我可以对公司名称进行搜索,但不是邮政编码。 Zend Lucene搜索索引整数有问题吗?如果可以摆脱一些有经验的灯光,请帮助我。我只能想象使用Lucene通过邮编搜索很常见。
答
我相信Zend Lucene的默认文本分析器默认不搜索数字。 Zend带有几种不同的文本分析器。使用TextNum分析器来搜索数字和字符。 zend/search/lucene/analysis/analyzer/common文件夹中还有其他一些分析器,您可能会发现它们很有用。
您可以用下面的代码更改默认分析:
Zend_Search_Lucene_Analysis_Analyzer::setDefault( new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum());
+0
另请注意,如果更改分析仪,则需要重建索引。如果您使用一台分析仪进行索引并用另一台进行搜索,则会得到错误的结果 – 2011-04-15 12:39:59
答
如果您正在寻找123,你会得到123以及34123例如全部命中。所以你必须确保你是索引并且你的查询字符串是明确的。
我建议将邮编索引为一个字符串,如“000123”。之后,您可以使用“000123”在索引上进行搜索,并且您将得到正确的结果集,而不是像34123那样。您只需将邮政编码翻译为“正确”的查询字符串。
索引看起来很好。您可以发布您的搜索查询吗? – 2009-06-01 11:42:09