2011-08-04 4 views
0

私はcodeigniterとdoctrineで全文検索を実行しようとしています。 私の問題は、Doctrineが卸売りの単語に対してのみ検索を実行することです。doctrineで部分単語を検索する

私は山を探していますが、私は山という言葉ですべてのエントリを取得します。 しかし、私が "マウント"を検索すると、私は何も得られません。

+0

テーブルの列タイプは何ですか?なぜLIKEを使用しないのですか? – Tom

答えて

0

私は、Symfony 1.4とDoctrine 1.2でSearchableの振る舞いを持つ同じ問題を抱えていました。私は単語に適用される検索用語にワイルドカード(?または*)を追加できることを発見しました。あなたの場合、 "マウント*"は山にマッチします。私の場合は、これを各検索タームに適用し、ユーザーから隠しました。

$results = $table->search('*'.$search_string.'*'); 

希望すると、誰かに役立ちます。

- 編集 - 少し急いで上記の投稿

...これは、単一の単語のクエリのための素晴らしい作品が、複数の単語の一部に再度失敗します。このようなものはうまくいくはずです:

$actual_search_string = '*'.implode('* *', explode(' ', $search_string)).'*'; 
$results = $table->search($actual_search_string); 
関連する問題