4

私は自分のウェブサイト(共有ウェブホスティング... hostgator.comでホストされている)に検索サポートを追加しようとしています。そのため、サーバー側のサポートを必要としない全文検索とファセット検索のオープンソースソリューションを探しています( phpとmysqlは別として)。

私はすでに、Mysql全文検索サポートを含むLucene、Solr、Sphinx、ZendLuceneなどの多くのソリューションを検討しました。また、Solrがそのようなものに最適なソリューションであることも知っておいてください。しかし、私が言ったように、私のWebサイトは、管理者権限のない共有Webホスティングでホストされているため、Solrを使用することはできません。また、現在私のWebサイトのデータベースはInnoDBエンジンを使用しているため、mysqlでinbuildフルテキストサポートを使用することはできません。

4

1 に答える 1

3

MyISAM テーブルで逆インデックスを手動で作成することを検討してください。難しいのは、インデックスを最新の状態に保つことです。これには、行の更新/挿入時に大量のコードが必要になるか、x 日 (または時間) ごとに完全な再インデックスを実行する必要があります。

転置索引が何であるかわからない場合は、単語を文書 ID にマップする索引です。たとえば、テーブル (id,name,description) を (1,"Test product","This product is awesome") でインデックス付けする場合、単語を "Test","product","This に分けることができます。 "、"すごい"。次に、これらすべての単語をデータベース テーブルに入れることができます (id,word,docID) => (1,"test",1),(2,"product",1),(3,"this",1),等

その後、何かを検索したい場合は、このインデックスに問い合わせてください。検索クエリ「test」は、word="test" を含むすべてのエントリを取得します。これは (1,"test",1) になります。次に、docID 1 が必要であることを認識し、完了です。

標準的なソリューションを使用するよりも間違いなく難しいですが、あなたの状況ではうまくいくはずです:)

もちろん、スペース区切りの言語でのみ機能します。中国語が必要な場合は、問題が発生します。

[編集] ああ、はい、ウィキペディアのエントリが役立つかもしれません: http://en.wikipedia.org/wiki/Inverted_index

于 2011-11-26T13:22:03.560 に答える