对 SQL Server 2008 记录进行排序时忽略停用词
我有一个包含书名字段的表。我希望能够对记录进行这样的排序:
- 古代鳄鱼
- 安妮阿姨的鳄鱼 鳄鱼
- 完整指南
- 国家鳄鱼
- 不要碰鳄鱼!
- 轻松狩猎鳄鱼
等等,忽略“A”、“An”和“A”、“An”和“A”。当它们作为标题的第一个词出现时,使用“The”。 (它们也可以在标题中的任何位置被忽略。)
我知道这些是 SQL Server 2008 中的停用词,因此如果有人在搜索中使用它们,可以忽略它们。
但有没有办法让 ORDER BY 忽略它们呢? (如果有影响,查询将使用 ASP.NET 中的 LinqDataSource。)
谢谢!
I have a table that has a book title field. I would like to be able to sort the records like this:
- The Ancient Alligator
- Aunt Annie's Alligator
- A Complete Guide to Alligators
- Countrified Alligators
- Don't Touch the Alligator!
- An Effortless Alligator Hunt
and so on, ignoring "A", "An", & "The" when they appear as the first word of the title. (They could also be ignored anywhere in the title.)
I know these are stopwords in SQL Server 2008, so they can be ignored if someone uses them in a search.
But is there a way to make them ignored by ORDER BY? (If it makes a difference, the query will use a LinqDataSource in ASP.NET.)
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您有大量记录,则使用replace() 计算排序键将无法扩展。
最好的方法是添加一个额外的表字段,其中包含删除了 A/An/The 等前缀的标题,并确保它有一个索引以加快排序速度。然后您可以只按这个新字段排序,但显示原始未更改的字段。
Computing a sort key by using replace() won't scale if you have a large number of records.
The best way is to add an additional table field containing the title with A/An/The etc prefixes removed and make sure it has an index to speed up sorting. Then you can just order by this new field but display the original unchanged field.
也许是这样的。
结果:
Something like this perhaps.
Result: