MySQL按章节/页面/段落等进行全文匹配,无重复表

MySQL按章节/页面/段落等进行全文匹配,无重复表,mysql,full-text-search,database-normalization,full-text-indexing,Mysql,Full Text Search,Database Normalization,Full Text Indexing,我使用的是一个数据库,默认情况下,文本按段落每行归档,章节、页面等都有元数据列。然后,MySQL全文查询显然会返回查询词匹配给定段落的所有行 现在,在某些情况下,为了更广泛的匹配,最好匹配出现在给定页面、章节等中的单词。同样,如果给定的单词只出现在给定的句子中,那么对于更细粒度的搜索,其他选项会产生过多的内容 实现这一点的简单方法是使用几个表。一个表格只有一个段落/行,一个表格的段落连接到一个页面/行,页面也连接到一个章节/行;在细粒度的结尾,段落分成句子,一句话/行 然而,这种复制本质上是相同

我使用的是一个数据库,默认情况下,文本按段落每行归档,章节、页面等都有元数据列。然后,MySQL全文查询显然会返回查询词匹配给定段落的所有行

现在,在某些情况下,为了更广泛的匹配,最好匹配出现在给定页面、章节等中的单词。同样,如果给定的单词只出现在给定的句子中,那么对于更细粒度的搜索,其他选项会产生过多的内容

实现这一点的简单方法是使用几个表。一个表格只有一个段落/行,一个表格的段落连接到一个页面/行,页面也连接到一个章节/行;在细粒度的结尾,段落分成句子,一句话/行

然而,这种复制本质上是相同的数据的级别让人感觉肮脏和不正常。。。接下来的问题是:有没有更聪明的方法来实现这一点——避免数据重复?当然,在某种程度上,它仍然使用索引,并且表现良好

下面是一个模式和查询示例,请参见:

在布尔模式下,从ft_段落中选择*将tText与+鼠标+老虎匹配

这将只匹配第一行段落,其中两个单词都出现在一行中

然后假设我想在每页的基础上匹配鼠标和老虎的所有实例。第4行和第5行也应该分别匹配包含鼠标和老虎的内容,两者都是第2页文本的一部分。第6行和第7行是不匹配的,因为第3页的文本总共没有tiger这个词,只有mouse这个词


如果不将段落连接到单独的每页文本表中,这是否可行?我希望解释和例子足够清楚。非常感谢

没有数据示例,很难提出可靠的建议。。看见但是你可以考虑写你自己的,包括你可能需要的搜索规则。谢谢雷蒙德,我补充了一些细节,我希望完成什么。我可能只是复制文本,而不是编写解析器插件^_^