2013-04-10 18 views
8

一般的な質問を申し訳ありません...私は長い間狩りを続けてきましたが、私が使用できるものや見つけられなかったものはまだ見つかりませんでした。私は本当にどんな指針にも感謝しています!iOSバンドルのフルテキスト検索ツール

私はいくつかのテキストブックをプレーンテキスト形式で含むリファレンスアプリケーションを構築しています。私は、ユーザーが検索を実行し、結果のリストでテーブルを取得できるようにしたい。私は実用的なプロトタイプを持っていますが、私が書いた検索ロジックはそれほど賢明ではないし、それをもっと良くしようとしています。

これは明らかに一般的な問題ですので、私はタスクに適応できるツールを探しています。これまで私はLucene(http://vafer.org/blog/20090107014544/)とLocayta(http://www.locayta.com/iOS-search-engine/locayta-search-mobile/)を見つけました。

LuceneはiOS 2で最後に更新されたようです...私は自分自身でそれを再加工できるかどうかは分かりません。多分。

Locaytaはおそらく大きく動作するだろうが、商用ライセンスは1,000ドルであり、ニッチ市場であるため、すぐにこのアプリでそれを補うことはできないかもしれない。

ありがとうございます!

+0

まあ、私は1つの可能な解決策を持っていると思う: https://github.com/TonnyXu/sqliteFTS 私は直接それを使ったことがないように私はSQLiteの上で多くを読むために必要がありますが、これはいるようです私が探しているものになる。私はまだ他の人が提供できる参考資料には感謝しています。ありがとう! –

+0

追加の恵み私はまだいくつかのガイダンスを探していますので...私はいくつかのオープンソースのもの(LuceneKit、FTS、いくつかのSQL拡張機能)を見つけたが、成功したそれらのいずれかを実装することができていない...など私はそれらを私のプロジェクトに取り込むことさえできません。ほとんどが絶望的に​​時代遅れであり、維持されているようには見えない。私も従うことができるチュートリアルはありません。一部のサイトでは他の人が一体何...巨大な歌と踊りを行うと、独自の静的ライブラリを構築するためにあなたを教え、FTSは、iOS版のSQLiteに含まれていると言いますか?私はちょうど失われている。助けをお待ちしています。 –

答えて

5

私は、私が働いているのと同じ苦境に遭遇し、まだ解決策を決定していません。 Locaytaは有望そうだが、それを除いて、私はSQLiteのFTS3/FTS4も調べた。

唯一の問題は、部分的な単語に一致する方法が不足しているようでした。 (例えば、「紙」は「プリンタ用紙」、「紙パンチ」、「スケッチ紙」と一致する)、または何かで始まる単語(例えば、「bi *」は「バインダー」にマッチする"、" bicycle ")がありますが、接尾辞にマッチする方法はありません。

この機能を必要としない場合は、FTS3/FTS4が機能する可能性があります。

私はあなたのSQLiteのはFTS3を認識しなかった()、と私は最初は同じ問題を持っていたのフォローアップで述べ参照してください。 デフォルトでは、iOSバージョンにバンドルされていないようですが、代わりにSQLite3の統合をダウンロードして、プロジェクトに手動で組み込む必要があります。 is FTS available in the iOS build of SQLite?

にも注意して見られるように、SQLITE_ENABLE_FTS3変数は、デフォルトで有効になっていない、あなただけのこのことができますhttp://www.sqlite.org/fts3.html#section_2

希望で説明するような構成に追加する必要があります。

+0

私は本当に助けに感謝します、ありがとう。私はSQLite上でiOS固有の指示を見つけるのは非常に難しいです...私はSQLiteステートメントを見つけることができますが、私は実際にそれらと何をすべきか、つまり言い換えればわかりません。私はまっすぐCでプログラムすることはできませんし、様々なラッパーは困惑しています。私はこれを行う簡単な解決策がないことを受け入れ、それは数週間で私の開発時間を延長するつもりです。私はこれはかなり一般的な問題だと思うので、非常に驚​​くべきことであり、良いオープンソースのものがあると思っていました。私はAppleがiOSでSpotlightを有効にしたいと思う! –

+0

私は古い "rangeOfString"メソッドを使用することに戻るかもしれません...それは数秒かかりましたが、うまくいきました。私は、FTSは実装するのがかなり簡単だと思っていましたが、私はそれを不可能であると感じています。チュートリアルはゼロに設定されており、実際に設定するプロセスをガイドします。私はこのプラットフォームの初心者ですので、コアデータを知っていますが、SQLiteを直接使いこなすことはありません。私が見つけたすべてのリソースは、あなたがすでにSQLiteプロであると仮定しているようです。しかたがない。 –

+0

@ReidBeltonはい、Core Dataを通じてFTSを使用する方法はわかりません。それはSQLiteと直接対話します。有効にしたら、検索したいフィールドを持つ仮想テーブルを作成し、それに対してSQLiteクエリを実行する必要があります。私は、データベースの直接的なやりとりに慣れていない場合、どのような面倒な作業になるかを知ることができます。 – Luca

4

あなたはその後Apache Lucy(Luceneの緩いの「C」ポート)は一見の価値があるかもしれない、iOS版のObjective-CにプレーンなCコードを変換することができます。

関連する問題