使用MySQL全文索引进行编程相关数据(SO数据转储)时出现问题

使用MySQL全文索引进行编程相关数据(SO数据转储)时出现问题,sql,mysql,full-text-search,Sql,Mysql,Full Text Search,我正在尝试为离线访问的StackOverflow实现一个搜索功能,我注意到使用MySQLs全文索引存在一些问题 具体来说,默认情况下,全文索引限制为长度在4到84个字符之间的单词。PHP或SQL等术语不符合最小长度,搜索这些术语将不会产生任何结果 可以修改控制单词需要索引的最小长度的变量ft_min_word_len,但这是一个系统范围的更改,需要重建所有数据库中的索引。万一其他人发现这个应用程序有用,我宁愿尽量保留这些变量。前几天我在这个网站上发现一篇帖子,说改变这个值只是个坏主意 另一个问题

我正在尝试为离线访问的StackOverflow实现一个搜索功能,我注意到使用MySQLs全文索引存在一些问题

具体来说,默认情况下,全文索引限制为长度在4到84个字符之间的单词。PHP或SQL等术语不符合最小长度,搜索这些术语将不会产生任何结果

可以修改控制单词需要索引的最小长度的变量ft_min_word_len,但这是一个系统范围的更改,需要重建所有数据库中的索引。万一其他人发现这个应用程序有用,我宁愿尽量保留这些变量。前几天我在这个网站上发现一篇帖子,说改变这个值只是个坏主意

另一个问题是像VB.NET这样的术语,据我所知,在学期中的期间将它分成两个索引值-VB和Net。同样,这意味着搜索VB.NET将不会返回任何结果

最后,由于我每月直接转储基于XML的转储,所以所有值都转换为HTML实体,我担心这可能会影响我的搜索结果

我发现它试图通过以下建议解决这些问题:

保留数据的两个副本—一个带有标记等以供显示,另一个已修改以供搜索—删除不需要的单词、标记等 填充短词,以便它们将被索引,我假设使用pre/后缀。 我想知道的是,这些真的是解决这些问题的最佳方法吗?半复制一张大于1GB的表似乎是浪费,但也许这只是我的问题

另外,如果有人能推荐一个好的网站来理解MySQL的全文索引,我将不胜感激。为了避免这个问题过于混乱,请在问题评论中留下网站建议,或者直接在我的用户档案中的网站上给我发电子邮件

谢谢

其他信息: 我想我应该澄清几件事

我知道MySQL倾向于假设web应用程序,但这不是我在这里要说的。我可以安装Apache和PHP并以这种方式运行,但我会尽量保持这种轻松。我可以使用我的网站玩PHP,所以我觉得没有必要把它也安装在我的家用电脑上。我也希望这对其他人也有用,我不想强迫其他人安装一堆额外的实用程序。我选择MySQL,因为它很简单,而且不可避免地需要安装某种DB

该项目的具体内容将是:

用WinC窗体编写的桌面应用程序 MySQL后端
我开始怀疑我是否应该干脆说见鬼去吧,然后安装所有我需要的东西,让它成为一个离线的网络应用程序。尽管我们都希望我们的宠物项目会被整个社区使用和喜爱,但我现在应该知道,这很可能最终只被一个用户使用。

根据前面所说的,我理解,MySQL全文版不适合你;但是为什么要坚持MySQL呢?试试斯芬克斯:


它会解决你的大部分问题。

我只是想确定我已经把这件事说清楚了。Sphinx是它自己的索引引擎,可以与MySQL或PostgreSQL一起使用。在我的例子中,我想使用SphinxSE,这样我就可以通过C中的MySQL名称空间直接使用它。这可能是我必须要做的,我想我会接受这个答案,但这个项目的一部分是让事情相对简单。例如,我打算作为一个桌面/WinForms C应用程序来做这件事,而不是需要安装Apache和PHP,因为它是严格离线的。我也不想安装这两个,因为我有自己的站点来满足Apache或PHP中的那种devNo需求。只需使用本机C绑定和Sphinx本身: