0

我正在尝试使用 Zend Lucene 来匹配查询短语,但我想要一个模糊匹配。

目前,如果我使用 PhraseQuery 并搜索“valentin rossi”,(在 DB 中有“valentino rossi”)我没有结果,因为 PhraseQuery 准确搜索字符串“valentin rossi”,没有模糊匹配或相似性字。

请给我一个提示,我必须在哪里寻找可行的解决方案。提前致谢!

4

3 回答 3

2

Zend Lucene 似乎支持模糊搜索。文档在这里

你只需要做这样的事情:

$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);
于 2013-10-17T15:12:19.473 回答
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的好书

于 2012-06-29T11:17:14.193 回答
0

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

于 2012-06-29T22:45:48.440 回答