5 php full-text-search zend-framework
那么为什么下面的第一个搜索示例没有返回结果呢?关于如何修改以下代码以进行数字搜索的任何想法都将非常感激.
$index = new Zend_Search_Lucene('/myindex', true);
$doc->addField(Zend_Search_Lucene_Field::Text('ssn', '123-12-1234'));
$doc->addField(Zend_Search_Lucene_Field::Text('cats', 'Fluffy'));
$index->addDocument($doc);
$index->commit();
Run Code Online (Sandbox Code Playgroud)
$index = new Zend_Search_Lucene('/myindex', true);
$results = $index->find('123-12-1234');
Run Code Online (Sandbox Code Playgroud)
$index = new Zend_Search_Lucene('/myindex', true);
$results = $index->find('Fluffy');
Run Code Online (Sandbox Code Playgroud)
这是您选择的分析器的效果。
我相信默认的分析器只会索引与 /[a-zA-Z]+/ 匹配的术语。这意味着您的 SSN 不会作为术语添加到索引中。
即使您切换到文本+数字不区分大小写的分析器,您想要的仍然无法工作。术语的表达式为 /[a-zA-Z0-9]+/ 这意味着添加到索引中的术语将为 12,123,1234。
如果您需要将 123-12-1234 视为有效术语,则可能需要扩展 Zend_Search_Lucene_Analysis_Analyzer_Common 并使 123-12-1234 成为一个术语。
您的另一个选择是将 ssn 存储为 Zend_Search_Lucene_Field::Keyword。由于关键字没有分解为术语。
归档时间: |
|
查看次数: |
943 次 |
最近记录: |