有人可以指出我正确的方向,我目前有一个可搜索的数据库,并遇到了按标题搜索的问题。
如果标题以“The”开头,那么显然标题将位于“T”部分,什么是避免被搜索的“The”的好方法?我应该连接两个字段来显示标题,但只搜索忽略前缀的第二个标题。还是有另一种方法可以做到这一点?建议或方向会很棒。谢谢。
答案 0 :(得分:2)
一些选择:
a)以“图书馆”格式存储标题,这意味着您处理标题并将其存储为
Scarlet Pimpernel, The
Tale of Two Cities, A
b)存储原始未更改的标题以用于显示目的,并添加新的“library_title”字段以存储来自a的处理版本。
c)添加一个新字段来存储文章,并在标题字段中添加裸标题。为了显示,你可以连接两个字段,搜索你只需查看标题字段。
答案 1 :(得分:2)
我认为最好的方法是使用全文搜索,在停用词列表中使用'the'。这将解决搜索问题(即,将忽略搜索短语上的''')。
但是,如果您按标题订购结果,则以“The”开头的标题仍会按照您的说法排序,“在'T'部分”。为了解决这个问题,有几种可能的方法。以下是其中一些:
其中......
答案 2 :(得分:0)
在数据库中创建三列
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
答案 3 :(得分:0)
如果您使用的是mysql,则可以使用str_replace函数从查询中删除“The”,或者如果您使用的是PHP或Ruby或其他语言,则可以在发送到数据库服务器之前清理查询。
答案 4 :(得分:0)
尝试查看一些sql函数,如LTRIM,RTRIM等,并在具有完全相同数据的临时列上使用这些函数。使用LTRIM修改数据,RTRIM通过删除你喜欢的任何单词。然后对修改后的列执行搜索并返回整行作为结果!