仅供参考,Google 不会进行任何向右或向左的子字符串搜索或截断。他们有一个通配符 * 来查找短语中的未知单词,但不是单词。
Google 与大多数全文搜索引擎一起,根据单词的字母顺序设置倒排索引,并提供指向其源文档的链接。二分搜索速度非常快,即使对于巨大的索引也是如此。但是在这种情况下做左截断真的很难,因为它失去了索引的优势。
注意:我我使用 SQL 的全文搜索功能、CONTAINS 子句和所有 - * 是全文中的通配符,% 仅用于 LIKE 子句.
我已经在几个地方读到过 MS SQL 不支持“前导通配符”搜索(例如使用“*overflow”来匹配“stackoverflow”)。我正在考虑使用 CLR 函数添加正则表达式匹配,但我很想知道人们可能有哪些其他解决方案。
更多信息:你只能在单词或短语的末尾添加星号。 - 根据我的经验:匹配 'myvalue' 时,'my*' 有效,但 '(asterisk)value' 不返回匹配项,执行时一个简单的查询:
SELECT * FROM TABLENAME WHERE CONTAINS(TextColumn, ''*searchterm'');
因此,我需要一个解决方法。我只在我的网站上的实际搜索页面上使用搜索 - 所以它的工作方式需要与 Google 的工作方式基本相同(在 Joe Sixpack 类型的用户眼中)。没有那么复杂,但这种匹配确实不应该失败。