Lucene Zend模糊匹配短语而不是单个单词

时间:2012-06-28 08:52:51

标签: zend-framework lucene zend-search-lucene zend-lucene

我正在尝试使用Zend Lucene来匹配查询短语,但我希望模糊匹配。

目前,如果我使用PhraseQuery并搜索“valentin rossi”,(并且在DB中有“valentino rossi”)我 没有结果,因为PhraseQuery完全搜索字符串“valentin rossi”,没有模糊匹配或单词之间的相似性。

请给我一个提示,我必须寻找一个有效的解决方案。提前谢谢!

3 个答案:

答案 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;

依旧......

请看Zend_Search_Lucene

这本好书

答案 2 :(得分:0)

Lucene PhraseQuery不支持通配符和模糊查询。我对Zend Lucene了解不多。在lucene中,您可以使用ComplexPhraseQueryParser来执行带模糊或通配符的短语搜索。它在内部使用SpanQueries。如果你可以使用Zend的ComplexPhraseQueryParser或SpanQueries,你应该很好。