有人可以请我指出正确的方向,我目前有一个可搜索的数据库,并遇到搜索问题的标题。数据库搜索减去“前缀”
如果标题以“The”开头,那么很显然标题将在'T'部分,避免“The”搜索的好方法是什么?我应该连接两个字段来显示标题,但仅通过忽略前缀的第二个标题进行搜索。还是有另一种方法来做到这一点?建议或指导将会很好。谢谢。
有人可以请我指出正确的方向,我目前有一个可搜索的数据库,并遇到搜索问题的标题。数据库搜索减去“前缀”
如果标题以“The”开头,那么很显然标题将在'T'部分,避免“The”搜索的好方法是什么?我应该连接两个字段来显示标题,但仅通过忽略前缀的第二个标题进行搜索。还是有另一种方法来做到这一点?建议或指导将会很好。谢谢。
几个选择:
一)在“库”格式,这意味着您处理标题并将其存储为
Scarlet Pimpernel, The
Tale of Two Cities, A
B)存储用于显示目的原来不变标题存储标题,并添加一个新的“library_title”字段来存储a)中的处理版本。
c)添加一个新字段来存储文章,并在标题字段中显示标题。为了显示,你需要连接两个字段,搜索时只需在标题字段中查看。
在数据库中创建三列
1)TitlePrefix 2)标题 3)TitlePostfix
代码,这样你有4种方法,如
searchTitleOnly(testToSearch) // search only title column
searchTitleWithPrefixAndPostfix(testToSearch)//concat all the three columns and search
searchTitlePrefix(testToSearch) // search title prefix only
searchTitlePostfix(testToSearch) // search title postfix only
如果你正在使用MySQL,您可以使用str_replace函数从查询中删除“The”,或者如果您使用PHP或Ruby或其他语言,则可以在发送到数据库服务器之前清理查询。
有没有必要'''在停用词列表中,并已被排除。 – Johan
我相信最好的方法是使用全文搜索,并在停用词列表中加入'the'。这将解决搜索问题(即搜索短语中的'''将被忽略)。
但是,如果您按标题订购结果,则在“T”部分中按照'The'开头的标题仍然会被排序。为了解决这个问题,有几种可能的方法。下面是其中一些:
在其他...
请使用任何代码示例?我在这方面严重不合格,因此奋斗,谢谢 – Renai
在阅读您对原始问题的最后评论之后,现在我相信您不需要全文搜索,只需要一种方法来订购结果。我会选择下面@Marc B指出的其中一个选项。 – bfavaretto
感谢bfavaretto,对我来说看起来很容易理解 – Renai
尝试寻找到像LTRIM,RTRIM等一些SQL函数,并在具有完全相同的DAT一个临时列中使用这些功能一个。通过使用LTRIM,RTRIM通过放弃任何您希望的单词来修改数据。然后在修改后的列上执行搜索并返回整行作为结果!
你正在使用什么样的搜索?标准的LIKE或全文搜索? – robjmills
所以,如果你有一个像“驯服sh”“这样的标题,你会希望它在搜索中出现使用术语”the“,但你不希望”闪亮“出现? – gordatron
好的这里有一个例子,感谢大家的快速回复; 分页结果AZ,你点击T,想要所有的东西都以T开头,所以,“The Shining”会出现在S下面,因为如果人们在开始时忘记或不知道有一个“The”,他们会没有找到他们正在寻找的东西,除非他们进行搜索。这是分页结果,A-Z。 – Renai