0

現在のMySQLデータベースをSphinxSEを使用してMariaDB5.5に変換することを検討しています。MariaDBに付属しているSphinxSEの使用に関する、実際の基本的な「ええ、あなたはばかです」チュートリアルを見つけることができませんでした。

プラグインのインストール方法に関するAskMontyのこのチュートリアルの最初の部分を理解しましたが、その後、基本的な使用法から始まり、そこで私の脳は脳のおならモードになり始めます。作成された特別なテーブルの必要性は理解していますが、最後にいくつか質問があります。この例では、id、weight、およびqueryが必要であり、特定の設定が必要であると示されています。ただし、そのテーブルに含めることができる次の追加フィールドは、必ずしも意味がありません。この特別なテーブルは、MySQLがSphinxのsearchedにクエリを実行し、結果がこのテーブルに返されるときに動的に構築されますか、それともこのテーブルにはsearchedによって入力された膨大な数のキーワードが含まれますか?

Sphinxに関するこのドキュメント(および役立つと思ったいくつかの記事の中で)によると、SphinxSEによって何が「処理」され、何をセットアップする必要があるのか​​がよくわかりませんでした。sphinx.confファイルにインデックスを設定する必要があると思いますか?それとも、クエリによって渡された属性を介して必要な特別なテーブルに何らかの形で設定されていますか?

さて、あなたは私がどれほど混乱しているのかを知っているので、基本的に私が助けてほしいことはここにあります。MariaDBを正常にインストールし、含まれているSphinxSEプラグインをインストールしたとしましょう。私の架空のデータベースには、Sphinxの全文検索機能を使用したい3つのテーブルがあります。

--
-- Table structure for table `page_articles`
--

CREATE TABLE IF NOT EXISTS `page_articles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `page_id` int(11) NOT NULL,
  `body` longtext NOT NULL,
  PRIMARY KEY (`id`),
  KEY `page_id` (`page_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `page_comments`
--

CREATE TABLE IF NOT EXISTS `page_comments` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `comment` text NOT NULL,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `page_content`
--

CREATE TABLE IF NOT EXISTS `page_content` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `content` longtext NOT NULL,
  `meta_keywords` text NOT NULL,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `content` (`content`,`meta_keywords`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

この時点から、必要なインデックスを適切に設定するにはどうすればよいですか?私が言ったように、私はいくつかの記事を読みましたが、インデックスを作成するためにフィールドがどのように選択されるか、またはMySQLフルテキストインデックスのみを選択し、そのインデックスがフィールドを選択するかどうかについてはあまり明確ではありませんでしたか?いくつかのインデックスを適切に設定した後、これらのテーブルからデータをプルするために使用できるいくつかの検索クエリからどのように始めればよいでしょうか。通常のMySQL全文検索(SELECT ... FROM table MATCH(blah_index)AGAINST(keywords))の構文は理解していますが、SphinxSEバージョンでまだ使用されているかどうかはわかりません。追加の助けをいただければ幸いです。ありがとう。

4

1 に答える 1

3

SphinxSEは、mysqlを使用してsphinxサーバーにクエリを実行できるようにする単なるインターフェイスです。それでも、スフィンクスを個別に設定する必要があります。

この記事では、インターフェースの使用方法を示します:SphinxSEの使用

ただし、テーブル定義のこの部分に注意してください。CONNECTION="sphinx://localhost:9312/test";

ここで、既存のsphinxサーバーに接続するように指示します。スフィンクスの設定方法を説明するドキュメントはたくさんあります。実際、スフィンクスのWebサイトにリンクされている記事でさえ、MySQLで動作するようにすべてを設定する方法を説明しています:スフィンクスとMySQL

于 2012-07-08T04:53:49.847 に答える