当我搜索特殊字符如“#”时,没有结果出现。用Zend搜索索引和搜索特殊字符Lucene
请注意,我已经转义了查询字符串。
但是,当与诸如“c#”之类的字母组合时,Lucene会找到该术语。
有什么办法可以搜索单个特殊字符吗?
这里是我的片断:
Zend_Search_Lucene_Search_Query_Wildcard::setMinPrefixLength(1);
Zend_Search_Lucene_Analysis_Analyzer::setDefault(
new \Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive());
$index = Zend_Search_Lucene::create('/tmp/index');
$doc = new Zend_Search_Lucene_Document;
$doc->addField(Zend_Search_Lucene_Field::Text('title', 'Some Title Here', 'UTF-8'))
->addField(Zend_Search_Lucene_Field::Text('content-01', '+ @ #', 'UTF-8'))
->addField(Zend_Search_Lucene_Field::Text('content-02', 'C+ C#', 'UTF-8'));
$index->addDocument($doc);
$index->commit();
/* returns 0 results */
$r = $index->find("/#");
echo count($r) . "\n";
/* returns 1 results */
$r = $index->find('C#');
echo count($r) . "\n";
/* returns 1 results */
$r = $index->find('C+');
echo count($r) . "\n";
'$ index-> find('C');'返回任何结果 –
非常正确。我希望有人能提供一个解决方案或至少一个解释。 – EngineerCoders
@NandakumarV和工程师 - 工作一小时后我有一些解决方案 - 检查我的答案 – Karol