我正在尝试使用Zend Lucene来匹配查询短语,但我希望模糊匹配。
目前,如果我使用PhraseQuery并搜索“valentin rossi”,(并且在DB中有“valentino rossi”)我 没有结果,因为PhraseQuery完全搜索字符串“valentin rossi”,没有模糊匹配或单词之间的相似性。
请给我一个提示,我必须寻找一个有效的解决方案。提前谢谢!
答案 0 :(得分:2)
Zend Lucene似乎支持模糊搜索。文档为here。
你只需要这样做:
$queryString = 'search terms here';
//add the '~' to make it fuzzy if there is a query string
$queryString = $queryString ? $queryString . '~' : $queryString;
$index = Zend_Search_Lucene::open('/path/to/index');
$results = $this->_index->find(queryString);
答案 1 :(得分:0)
如果您使用的是Zend Lucene,则需要准备要搜索的文本,所以:
$texttosearch = 'valentin rossi';
$query = Zend_Search_Lucene_Search_QueryParser::parse($texttosearch);
//you can echo $query to see result
echo $query;
依旧......
这本好书答案 2 :(得分:0)
Lucene PhraseQuery不支持通配符和模糊查询。我对Zend Lucene了解不多。在lucene中,您可以使用ComplexPhraseQueryParser来执行带模糊或通配符的短语搜索。它在内部使用SpanQueries。如果你可以使用Zend的ComplexPhraseQueryParser或SpanQueries,你应该很好。