クエリ フレーズの照合に Zend Lucene を使用しようとしていますが、あいまい一致が必要です。
現時点では、PhraseQuery を使用して「valentin rossi」を検索すると (DB には「valentino rossi」があります)、結果がありません。PhraseQuery は文字列「valentin rossi」を正確に検索するため、言葉。
実用的な解決策を探す必要がある場所を教えてください。前もって感謝します!
クエリ フレーズの照合に Zend Lucene を使用しようとしていますが、あいまい一致が必要です。
現時点では、PhraseQuery を使用して「valentin rossi」を検索すると (DB には「valentino rossi」があります)、結果がありません。PhraseQuery は文字列「valentin rossi」を正確に検索するため、言葉。
実用的な解決策を探す必要がある場所を教えてください。前もって感謝します!
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);
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に関するこの素晴らしい本を見てください。
Lucene PhraseQuery は、ワイルドカードおよびファジー クエリをサポートしていません。Zend Lucene についてはよくわかりません。lucene では、ComplexPhraseQueryParser を使用して、ファジーまたはワイルドカードを使用したフレーズ検索を実行できます。内部で SpanQueries を使用します。Zend で ComplexPhraseQueryParser または SpanQueries を利用できる場合は、うまくいくはずです。