我看到Entity Framework核心2.1有一个新功能可供使用FREETEXT
,但我不知道如何使用它,因为没有我可以在网上找到的例子.
https://github.com/aspnet/EntityFrameworkCore/issues/11484
有人用过它还能给我一个简单的例子吗?
是否可以通过自由文本匹配的相关性在SQL Server 2005中排序结果?在MySQL中,您可以在ORDER BY部分中使用(大致相当的)MATCH函数,但我没有在SQL Server中找到任何等价物.
来自MySQL文档:
对于表中的每一行,MATCH()返回一个相关值; 也就是说,搜索字符串与MATCH()列表中指定的列中该行中的文本之间的相似性度量.
因此,例如,您可以按投票数,然后是相关性,最后按创建日期排序.这是可以完成的事情,还是仅仅返回匹配值而没有这种排序能力?
SQL Server可以使用同义词库文件在自由文本查询中进行替换,因此搜索"IE"可能会在文本中返回带有"Internet Explorer"或"Quirky Browser"的结果.
不幸的是,SQL Server 2008的同义词库文件是空的!有没有预定义的英文SQL Server同义词库文件?我无法从搜索中找到任何明显的来源.
(是的,我可以根据需要建立一个)
谢谢
瑞安
我们在下表中添加了自由文本搜索:
| 1 | kayer-meyar |
| 2 | KA-ME |
Run Code Online (Sandbox Code Playgroud)
但,
select *
from Names
where CONTAINS(name, '"ME*"')
Run Code Online (Sandbox Code Playgroud)
仅返回:
| 1 | kayer-meyar |
Run Code Online (Sandbox Code Playgroud)
而,
select *
from Names
where CONTAINS(name, '"KA*"')
Run Code Online (Sandbox Code Playgroud)
返回两者:
| 1 | kayer-meyar |
| 2 | KA-ME |
Run Code Online (Sandbox Code Playgroud)
我们跑的时候:
select *
from sys.dm_fts_parser('"KA-ME"', 1033, NULL, 0)
Run Code Online (Sandbox Code Playgroud)
收益:
ka-me
ka
me
Run Code Online (Sandbox Code Playgroud) 任何人都可以解释这种行为或如何绕过它?
如果您执行此查询:
select *
from TblA
left join freetexttable ( TblB, *, 'query' ) on TblA.ID = [Key]
inner join DifferentDbCatalog.dbo.TblC on TblA.ID = TblC.TblAID
Run Code Online (Sandbox Code Playgroud)
这将非常非常缓慢.
如果您将该查询更改为使用两个内部联接而不是左联接,则会非常快.如果将其更改为使用两个左连接而不是内连接,则会非常快.
如果使用sql表变量而不是freetexttable,则可以观察到相同的行为.
每当有一个表变量(或自由文本表)和一个不同数据库目录中的表时,就会出现性能问题,其中一个表位于内连接中,另一个表位于左连接中.
有谁知道为什么这么慢,或者如何加快速度?
我正在运行一个小型网站,其中我想制作像"相关链接"部分这样的功能.
为此,我创建了全文目录和索引.
到目前为止,我尝试了很多方法来创建搜索查询,其行为类似谷歌,但我会说我甚至没有接近谷歌正在做的10%.在我的研究期间,我发现只有在查询之后才能提供良好的记录.
Select col1, col2
from MyTable
Where
FREETEXT(col1, 'User Passed Search Text')
Run Code Online (Sandbox Code Playgroud)
有没有人有很好的方法来创建一个FullText搜索查询,它可以帮助获得给定文本更好的相关记录?
谢谢
我在使用sql server全文功能时遇到问题.我正在转换一些论坛软件以使用全文搜索,我有一切设置和工作.我的问题与全文查询有关.当我在sql server管理工作室中使用CONTAINS谓词来测试它们时,我设计了一些根据需要运行的查询,例如:
Select ....
From .....
WHERE Contains(p.Message,'" dog food "' ) ......
Run Code Online (Sandbox Code Playgroud)
所以这运行正常,但我如何在准备好的语句中参数化?理想情况下,我希望能够使用where子句运行查询,如:
Select ....
From .....
WHERE Contains(p.Message,'" @SearchTerm "' ) ...
Run Code Online (Sandbox Code Playgroud)
甚至
WHERE Contains(p.Message,'"@SearchTerm" Near "@OtherSearchTerm" ) ...
Run Code Online (Sandbox Code Playgroud)
但这种方法不起作用,因为双引号和所有.我可以在代码中动态构建搜索项,但出于安全原因,我确实需要为所有用户输入使用参数.我已经看过一个试图寻找解决方案但仍然无法找到解决方案的google结果(当然这必须发生在每个人身上,或者我错过了一些非常明显的东西和/或它是不可能的).有任何想法吗?
有趣的挑战; 我的客户在SQL数据库中输入一些产品信息.该产品是一位着名的古老俄罗斯作曲家拉赫玛尼诺夫的画作.所以该名称在描述字段中.现在,只有少数搜索产品的客户知道如何拼写这个名字,但大部分时间都拼写错误.除了拼写错误之外,还有很多国际客户只是写出这个名字,如Rachmaninow,Rahmaninov,Рахманінаў.
如果我将这些拼写错误或翻译中的任何一个放入谷歌(几乎)总是知道如何纠正它并将我直接重定向到正确的页面.
有谁知道我的可能性是什么在我的产品搜索中获得一些神奇的东西?我可以使用一些API吗?一些我不知道的超级自由文本选项?要么 ...
我们正在研究一种文档搜索引擎 - 主要关注索引用户提交的MS Word文档.
我们注意到,有关键字填充滥用.
我们确定了两种主要的滥用行为:
通过添加与文档背景颜色相同的字体颜色的文本,或者通过将字体大小设置为1px,可以启用这两种滥用形式.
虽然确定背景颜色是否与文本颜色相同,但考虑到MS字布局的复杂性,这是很棘手的 - 字体大小也是如此 - 因为任何截止似乎都是任意的 - 如果我们可能会意外删除有效文本设置截止太大.
我的问题是 - 是否有任何标准化的预处理或统计分析技术可用于减少此类关键字填充的影响?
任何指导将不胜感激!
假设文本在同一个(以色列)时区同时输入,则以下自由文本行是等效的:
Wed Sep 9 16:26:57 IDT 2009
2009-09-09 16:26:57
16:26:57
September 9th, 16:26:57
Run Code Online (Sandbox Code Playgroud)
是否有一个python模块可以将所有这些文本日期转换为(相同的)datetime.datetime
实例?
我想在命令行工具中使用它,它将获取自由文本日期和时间作为参数,并返回不同时区的等效日期和时间,例如:
~$wdate 16:00 Israel
Israel: 16:00
San Francisco: 06:00
UTC: 13:00
Run Code Online (Sandbox Code Playgroud)
要么:
~$wdate 18:00 SanFran
San Francisco 18:00:22
Israel: 01:00:22 (Day after)
UTC: 22:00:22
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
谢谢,
乌迪
我在SQL Server 2008中有这个查询
SELECT TOP 1000 *
FROM Quotes
INNER JOIN QuoteImages ON Quotes.Id = QuoteImages.QuoteId
WHERE FREETEXT(QuoteText,'some text')
Run Code Online (Sandbox Code Playgroud)
如何按最相关或最高排名订购结果?
我已经阅读了msdn文档,但它似乎很复杂,我不知道如何创建复杂的存储过程.
我有SQL server 2008 r2版本,正在开发,.Net
网页作为前端.
出现这个问题,数据库中有一列基本上由逗号分隔的各种技能组成.例如一些候选人有3种不同的技能,即设定C#
,SQL server
,Oracle
.想要列出具有两者技能的候选人C#
并且Oracle
将C#, Oracle
在网页上的文本框中提供输入的用户.我想写一个可以列出这样的查询.我尝试过自由文本搜索.但是,如果用Capital /小词,不支持通配符,甚至是技能的顺序,它都无法获取.
以下是示例查询
Select * from profiles where freetext(skills, ‘C#,Oracle’)
Run Code Online (Sandbox Code Playgroud)