我有一个非常简单的公司索引与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 Search索引整数是否存在问题?如果s / o可以解释一些有经验的人,请帮助我。我只能想象使用Lucene来搜索zipcode很常见。
答案 0 :(得分:3)
我相信Zend Lucene的默认文本Analyzer默认不搜索数字。 Zend包含几种不同的文本分析器。使用TextNum分析器搜索数字和字符。 zend / search / lucene / analysis / analyzer / common文件夹中还有一些其他分析器可供您使用。
您可以使用以下代码更改默认分析器:
Zend_Search_Lucene_Analysis_Analyzer::setDefault( new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum());
答案 1 :(得分:0)
我相信你的问题在于Analyzer。
我建议你使用Zend_Search_Lucene_Field::Keyword
,
而不是Zend_Search_Lucene_Field::Unstored
的邮政编码字段。
这样,Lucene分析器在索引时不会修改邮政编码。
Java Lucene具有explain(),可用于调试搜索。
您可能必须打印一些临时值来模拟explain(),并查看这是否确实是问题所在。
答案 2 :(得分:0)
如果您正在搜索123,那么您将获得123次以及34123次的所有点击。所以你必须确保你是索引,你的查询字符串是明确的。
我建议将邮政编码索引为字符串,例如“000123”。之后,您可以使用“000123”搜索索引,您将获得正确的结果集,而不是像34123那样。您只需要将zipcode转换为“正确的”查询字符串。