[英]Writing full-text search algorithm in C# / Entity Framework - where to start?
[英]Full-Text Search with Entity Framework Core
使用EFCore進行全文搜索的最佳方法是什么
現在我有兩種方法
方法#1
var entities = this.DbContext.Example
.FromSql("fullText_Proc {0}, {1}", searchTermParameter, topParameter);
return entities.AsNoTracking().ToList();
在這里,我被迫創建一個proc,因為FromSql忽略了WHERE子句。
方法#1
創建命令並手動執行映射
using (var command = this.DbContext.Database.GetDbConnection().CreateCommand())
{
command.CommandText = "SELECT ... WHERE CONTAINS("Name", @p1)";
command.CommandType = CommandType.Text;
var parameter = new SqlParameter("@p1",...);
this.DbContext.Database.OpenConnection();
using (var result = command.ExecuteReader())
{
while (result.Read())
{
.... // Map entity
}
}
}
實際上,WHERE子句正在使用FromSql。 我花了足夠的時間來實現問題是傳遞參數。
這就是我解決問題的方法。
public IList<Example> QueryPhrase(string phrase)
{
phrase = $"FORMSOF(FREETEXT, \"{phrase}\")";
var query = _dataContext.Example
.FromSql(@"SELECT [Id]
,[Sentence]
FROM [dbo].[Example]
WHERE CONTAINS(Sentence, @p0)", phrase)
.AsNoTracking();
return query.ToList();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.