<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Full text search for all MySQL Storage Engines</title>
	<atom:link href="http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/</link>
	<description>Percona&#039;s MySQL &#38; InnoDB performance and scalability blog</description>
	<lastBuildDate>Sat, 11 Feb 2012 16:45:54 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Jaimie Sirovich @ SEO Egghead, Inc.</title>
		<link>http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/comment-page-1/#comment-723983</link>
		<dc:creator>Jaimie Sirovich @ SEO Egghead, Inc.</dc:creator>
		<pubDate>Sat, 13 Feb 2010 01:02:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/#comment-723983</guid>
		<description>@Brian

AFAIK there is still no way, but I&#039;m not sure why people regard this as a problem.  It wouldn&#039;t be too hard to use a MyISAM table just for search, and keep the information via rules (functions, triggers, whatever).  In a sense, if it&#039;s not critical to keep the index 100% up-to-date, it&#039;s better to cron it and rebuild at interval.  In fact, MySQL documentation indicates it is much faster to rebuild sometimes as well.  There&#039;s some underlying algorithmic reason, I&#039;m sure.

Also, I&#039;ve noticed that it&#039;s extremely expensive (others might benefit from this knowledge) to hit 2 FT indices at a time.  Again, probably some underlying reason why this is not efficient.  WHERE FT_QUERY_1 AND FT_QUERY_2 seems to be OK, but &quot;OR&quot; seems to be a huge problem on large datasets.

Therefore, it would seem that the solution to searching multiple FT indices is NOT to do so, and create a table or column that puts all the information together.  Unfortunately, in MySQL, there are no expression-based indexes, but I&#039;m not 100% sure that would work for FT.

Hope the above helps someone.  Also, reasonable results can be achieved by using BOOLEAN queries to restrict, and expressions to sort.  AFAIK, natural FTS can&#039;t sort until all results are returned anyway.

I have reasonable success with MySQL 5.1 and 100k+ product rows.  Sphinx is better in some ways, but FT is fairly mature now.

One thing I cannot figure out is how to efficiently understand/normalize the numbers returned from natural FTS. i.e. to add a boost from another non FTS column.  The numbers are effectively random from one query to the next.  It would be nice if MySQL had a way to rank from 1-100, but I&#039;m not sure that&#039;s a free operation.  I&#039;m not a DBMS expert.  You can&#039;t just add +5, though, and selecting MAX is not cheap.

If anyone knows how to do that, I&#039;d love to know :)</description>
		<content:encoded><![CDATA[<p>@Brian</p>
<p>AFAIK there is still no way, but I&#8217;m not sure why people regard this as a problem.  It wouldn&#8217;t be too hard to use a MyISAM table just for search, and keep the information via rules (functions, triggers, whatever).  In a sense, if it&#8217;s not critical to keep the index 100% up-to-date, it&#8217;s better to cron it and rebuild at interval.  In fact, MySQL documentation indicates it is much faster to rebuild sometimes as well.  There&#8217;s some underlying algorithmic reason, I&#8217;m sure.</p>
<p>Also, I&#8217;ve noticed that it&#8217;s extremely expensive (others might benefit from this knowledge) to hit 2 FT indices at a time.  Again, probably some underlying reason why this is not efficient.  WHERE FT_QUERY_1 AND FT_QUERY_2 seems to be OK, but &#8220;OR&#8221; seems to be a huge problem on large datasets.</p>
<p>Therefore, it would seem that the solution to searching multiple FT indices is NOT to do so, and create a table or column that puts all the information together.  Unfortunately, in MySQL, there are no expression-based indexes, but I&#8217;m not 100% sure that would work for FT.</p>
<p>Hope the above helps someone.  Also, reasonable results can be achieved by using BOOLEAN queries to restrict, and expressions to sort.  AFAIK, natural FTS can&#8217;t sort until all results are returned anyway.</p>
<p>I have reasonable success with MySQL 5.1 and 100k+ product rows.  Sphinx is better in some ways, but FT is fairly mature now.</p>
<p>One thing I cannot figure out is how to efficiently understand/normalize the numbers returned from natural FTS. i.e. to add a boost from another non FTS column.  The numbers are effectively random from one query to the next.  It would be nice if MySQL had a way to rank from 1-100, but I&#8217;m not sure that&#8217;s a free operation.  I&#8217;m not a DBMS expert.  You can&#8217;t just add +5, though, and selecting MAX is not cheap.</p>
<p>If anyone knows how to do that, I&#8217;d love to know <img src='http://www.mysqlperformanceblog.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian</title>
		<link>http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/comment-page-1/#comment-452924</link>
		<dc:creator>Brian</dc:creator>
		<pubDate>Fri, 23 Jan 2009 16:58:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/#comment-452924</guid>
		<description>Is there any way I can use fulltext search feature on innodb yet? If somebody knows, please let me know.</description>
		<content:encoded><![CDATA[<p>Is there any way I can use fulltext search feature on innodb yet? If somebody knows, please let me know.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: CSS</title>
		<link>http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/comment-page-1/#comment-347000</link>
		<dc:creator>CSS</dc:creator>
		<pubDate>Thu, 21 Aug 2008 07:01:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/#comment-347000</guid>
		<description>Got a nice blog site. Please visit.</description>
		<content:encoded><![CDATA[<p>Got a nice blog site. Please visit.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: AMlogix</title>
		<link>http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/comment-page-1/#comment-196882</link>
		<dc:creator>AMlogix</dc:creator>
		<pubDate>Sun, 18 Nov 2007 13:07:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/#comment-196882</guid>
		<description>Thats great article undergone, realy informative,
For more Mysql examples please check my Blog

Mysql Examples
http://mysqlexamples.blogspot.com</description>
		<content:encoded><![CDATA[<p>Thats great article undergone, realy informative,<br />
For more Mysql examples please check my Blog</p>
<p>Mysql Examples<br />
<a href="http://mysqlexamples.blogspot.com" rel="nofollow">http://mysqlexamples.blogspot.com</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Lu</title>
		<link>http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/comment-page-1/#comment-97121</link>
		<dc:creator>Chris Lu</dc:creator>
		<pubDate>Thu, 29 Mar 2007 00:14:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/#comment-97121</guid>
		<description>Please take a look at this
	
	http://wiki.dbsight.com/index.php?title=Create_Lucene_Database_Search_in_3_minutes
	
	You can create a full-text database search service, return results as HTML/XML/JSON. It uses the Lucene directly in java, but can be easily used with Ruby, PHP, or any existing database web applicatoins.
	
	You can easily index, re-index, incremental-index. It&#039;s also highly scalable and easily customizable.
	
	The best thing is, it&#039;s super easy. You can create a production-level search in 3 minutes.</description>
		<content:encoded><![CDATA[<p>Please take a look at this</p>
<p>	<a href="http://wiki.dbsight.com/index.php?title=Create_Lucene_Database_Search_in_3_minutes" rel="nofollow">http://wiki.dbsight.com/index.php?title=Create_Lucene_Database_Search_in_3_minutes</a></p>
<p>	You can create a full-text database search service, return results as HTML/XML/JSON. It uses the Lucene directly in java, but can be easily used with Ruby, PHP, or any existing database web applicatoins.</p>
<p>	You can easily index, re-index, incremental-index. It&#8217;s also highly scalable and easily customizable.</p>
<p>	The best thing is, it&#8217;s super easy. You can create a production-level search in 3 minutes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: peter</title>
		<link>http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/comment-page-1/#comment-67107</link>
		<dc:creator>peter</dc:creator>
		<pubDate>Fri, 02 Mar 2007 18:25:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/#comment-67107</guid>
		<description>Gunnar,

I&#039;ve asked Andrew to add some kind of tutorial and he will do that once he finds a time.  Honestly we do not use sphinx as storage engine but instead as stand alone application most of the time simply retrieving rows from MySQL based on IDs. 

It makes it much easier in terms of profiling etc.

I think Sphinx is great solution for MySQL at this point especially if you&#039;re looking for search performance and large data sizes.</description>
		<content:encoded><![CDATA[<p>Gunnar,</p>
<p>I&#8217;ve asked Andrew to add some kind of tutorial and he will do that once he finds a time.  Honestly we do not use sphinx as storage engine but instead as stand alone application most of the time simply retrieving rows from MySQL based on IDs. </p>
<p>It makes it much easier in terms of profiling etc.</p>
<p>I think Sphinx is great solution for MySQL at this point especially if you&#8217;re looking for search performance and large data sizes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Gunnar</title>
		<link>http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/comment-page-1/#comment-64880</link>
		<dc:creator>Gunnar</dc:creator>
		<pubDate>Thu, 01 Mar 2007 00:40:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/#comment-64880</guid>
		<description>Hi Peter,

In your main post you outline that sphinx can be used by MySQL 5.1 as storage engine?
Can you please explain this in detail?


I&#039;m currently using MyISAM becasue of the fulltext index for two forums.
Size is 2 Million records and 100,000 records.
Average new rows per day 400.
Average page hits per day 250,000 

I&#039;m very unhappy about using MyISAM for obvious table locking reasons and issues.
The combination of complicated (long) search + insert + many parallel small selects  gives terrible performance with MyISAM.

I would liek to switch to something &quot;better&quot;.
I wonder if switching to a mix of innodb and myisam could help.
Running the table under Innodb and having an extar fulltext ISAM table.
This way normal reads that don&#039;t use FT search could run without slowdown from the normal table ...

A FT search for Inno would propably the easiest way.
Or do you think that sphinx would a better solution?


Regards to you and vadim
Gunnar</description>
		<content:encoded><![CDATA[<p>Hi Peter,</p>
<p>In your main post you outline that sphinx can be used by MySQL 5.1 as storage engine?<br />
Can you please explain this in detail?</p>
<p>I&#8217;m currently using MyISAM becasue of the fulltext index for two forums.<br />
Size is 2 Million records and 100,000 records.<br />
Average new rows per day 400.<br />
Average page hits per day 250,000 </p>
<p>I&#8217;m very unhappy about using MyISAM for obvious table locking reasons and issues.<br />
The combination of complicated (long) search + insert + many parallel small selects  gives terrible performance with MyISAM.</p>
<p>I would liek to switch to something &#8220;better&#8221;.<br />
I wonder if switching to a mix of innodb and myisam could help.<br />
Running the table under Innodb and having an extar fulltext ISAM table.<br />
This way normal reads that don&#8217;t use FT search could run without slowdown from the normal table &#8230;</p>
<p>A FT search for Inno would propably the easiest way.<br />
Or do you think that sphinx would a better solution?</p>
<p>Regards to you and vadim<br />
Gunnar</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: peter</title>
		<link>http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/comment-page-1/#comment-24855</link>
		<dc:creator>peter</dc:creator>
		<pubDate>Mon, 18 Dec 2006 16:54:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/#comment-24855</guid>
		<description>Ashish,

Please post your question at forum,  forum.mysql.com as it is not relevant to the blog post.</description>
		<content:encoded><![CDATA[<p>Ashish,</p>
<p>Please post your question at forum,  forum.mysql.com as it is not relevant to the blog post.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ashish</title>
		<link>http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/comment-page-1/#comment-24854</link>
		<dc:creator>Ashish</dc:creator>
		<pubDate>Mon, 18 Dec 2006 16:45:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/#comment-24854</guid>
		<description>just got a problem in mysql query,

it&#039;s just I can&#039;t understand why it happens that whenever i try to run queries at the first time it takes lots of time while after running it at first time they don&#039;t take much time to run.....i want to run my all queries run asmuch faster as they get run after running them first time....i hope you&#039;ll get what i mean.......i&#039;m hopeful for your favourable response.</description>
		<content:encoded><![CDATA[<p>just got a problem in mysql query,</p>
<p>it&#8217;s just I can&#8217;t understand why it happens that whenever i try to run queries at the first time it takes lots of time while after running it at first time they don&#8217;t take much time to run&#8230;..i want to run my all queries run asmuch faster as they get run after running them first time&#8230;.i hope you&#8217;ll get what i mean&#8230;&#8230;.i&#8217;m hopeful for your favourable response.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: peter</title>
		<link>http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/comment-page-1/#comment-1050</link>
		<dc:creator>peter</dc:creator>
		<pubDate>Fri, 14 Jul 2006 10:34:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/2006/06/26/full-text-search-for-all-mysql-storage-engines/#comment-1050</guid>
		<description>gunyarakun,

I have not used Senna.   It is however not full text engine which is embedded in MySQL, but I see there are some patches so it can be bound to MySQL.  

Only fractions of web site are available in English so I could not find all info I was looking for. If you know author email let me know.</description>
		<content:encoded><![CDATA[<p>gunyarakun,</p>
<p>I have not used Senna.   It is however not full text engine which is embedded in MySQL, but I see there are some patches so it can be bound to MySQL.  </p>
<p>Only fractions of web site are available in English so I could not find all info I was looking for. If you know author email let me know.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

