小编Eri*_*ric的帖子

实体框架,代码优先和全文搜索

我意识到有很多关于全文搜索和实体框架的问题,但我希望这个问题有点不同.

我正在使用Entity Framework,Code First,需要进行全文搜索.当我需要执行全文搜索时,我通常还会有其他条件/限制 - 例如跳过前500行,或过滤其他列等.

我看到这是使用表值函数处理的 - 请参阅http://sqlblogcasts.com/blogs/simons/archive/2008/12/18/LINQ-to-SQL---Enabling-Fulltext-searching.aspx.这似乎是正确的想法.

不幸的是,在实体框架5.0之前不支持表值函数(我认为,即使这样,它们也不支持Code First).

我真正的问题是,对于实体框架4.3和实体框架5.0,最佳处理方式的建议是什么.但具体来说:

  1. 除了动态SQL(System.Data.Entity.DbSet.SqlQuery例如,通过),Entity Framework 4.3是否有可用的选项?

  2. 如果我升级到Entity Framework 5.0,有没有办法可以首先使用表值函数和代码?

谢谢,埃里克

linq full-text-search entity-framework ef-code-first

52
推荐指数
3
解决办法
3万
查看次数

是否可以使用实体框架直接引用多对多表,代码优先

我正在使用实体框架并建模多对多关系.

我使用流畅的API创建了两个实体之间的关系(假设用户和组):

this.HasMany(t => t.Users)
.WithMany(t => t.Groups)
.Map(
m =>
{
  m.ToTable("GroupMembers");
  m.MapLeftKey("Group_Id");
  m.MapRightKey("User_Id");
});
Run Code Online (Sandbox Code Playgroud)

这很好用,但我也希望能够直接引用GroupMembers表.要做到这一点,我有类似的东西:

[Table("GroupMembers")]
public class GroupMember
{
    #region Properties

    /// <summary>
    /// Gets or sets the group.
    /// </summary>
    public virtual Group Group { get; set; }

    /// <summary>
    /// Gets or sets the Id of rht group.
    /// </summary>
    [Key]
    [Column("Group_Id", Order = 1)]
    public int GroupId { get; set; }

    /// <summary>
    /// Gets or sets the user.
    /// </summary>
    public virtual User …
Run Code Online (Sandbox Code Playgroud)

many-to-many ef-code-first entity-framework-4.1

15
推荐指数
1
解决办法
5257
查看次数

如何动态更改ElasticSearch的同义词

我的同义词存储在数据库中,当在数据库中更改同义词时,我想更新索引中的任何值,这些值可能会因同义词更改而更改.

我可以想到有两个部分.一,找出要重新索引的文件.二,弄清楚如何告诉ElasticSearch同义词已经改变.我正在努力争取第二个 - 告诉ElasticSearch同义词已经改变了.

有一个类似的问题已被提出 - 请参阅更改动态弹性搜索同义词 - 但从阅读该问题的答案,我无法弄清楚我需要什么.

目前,我的配置文件如下所示:

index :
  analysis :
    analyzer :
      myanalyzer :
        filter: [standard, mysynonymfilter]
filter :
  mysynonymfilter :      
    type : synonym
    synonyms : synonyms.txt
    ignore_case : false
    expand : true
    format : solr
Run Code Online (Sandbox Code Playgroud)

我的想法是做类似以下的事情:

curl -XPUT 'http://127.0.0.1:9200/foo/_settings'  -d '
{
    "filter" : {
        "synonym" : {
            "type" : "mysynonymfilter",
            "synonyms" : [
                "cosmos, universe"
            ] 
        }
    }
}
'
Run Code Online (Sandbox Code Playgroud)

但这似乎没有做我想要的.也就是说,据我所知,索引设置不会更新.

我正在尝试做什么?如果是这样,任何想法我做错了什么?

此外,我相信我可以通过更新同义词文件(如果我必须使用文件)来实现这一点,但这有点复杂,我想避免的事情.

谢谢你的帮助,埃里克

elasticsearch

8
推荐指数
3
解决办法
9444
查看次数

MSMQ和记录

我有一种情况,我想保留已处理的所有MSMQ消息的历史记录或日志(至少在一段时间内).我意识到我可以使用计算机管理 - >服务和应用程序 - >消息队列来查看当前队列.但我想要的是已经处理过的消息的历史或日志.

到目前为止,我还没有找到一种非编程方式来做到这一点.理想情况下,设置MSMQ属性非常简单,以便所有消息都记录到文件甚至Windows日志中.

有谁知道这个(或类似的东西)是否可能?

msmq

7
推荐指数
1
解决办法
1万
查看次数

Azure中的Windows Workflow

我正在构建一个将在Azure上运行工作流的应用程序.

我已经看到构建演示文稿 使用Workflow构建应用程序和Azure - BUILD 2011,它讨论了当前的功能,以及未来可能实现的功能.讨论的一件事是称为"Azure工作流服务",据我所知,计划在2012年进行预览.但是,我还没有找到更多有关它的信息.

此外,Windows Azure AppFabric中还有一个早期演示文稿Workflow,其中讨论了有关Azure中工作流的更多信息,重点介绍了Windows Azure AppFabric CTP.本演示文稿中讨论了许多很酷的功能,但我不确定这些功能是否可用,如果没有,可用时.

所以有两个问题:

如果我今天需要构建应用程序,那么在Azure上实现工作流的建议方法是什么?

如果应用程序不需要在一年之后完成,那么在Azure上实现工作流的建议方法是什么?

workflow azure workflow-foundation-4 azure-appfabric

7
推荐指数
1
解决办法
5299
查看次数

ElasticSearch和突出显示性能 - 普通与快速矢量荧光笔

运行使用slop和事实向量荧光笔的查询时,我遇到性能问题.有趣的是,当使用普通荧光笔执行相同的查询时,性能问题就消失了,我不确定为什么会这样.

这是搜索字段的元数据:

contents: {
   store: true
   search_analyzer: mySearchAnalyzer
   term_vector: with_positions_offsets
   type: string
}
Run Code Online (Sandbox Code Playgroud)

以下使用事实向量荧光笔的查询需要60秒以上:

{
  "size": 500,
  "query": {
    "query_string": {
      "query": "\"CATERPILLAR FINANCIAL SERVICES ASIA PTE LTD\"~5",
      "fields": [
        "contents"
      ],
      "default_operator": "and",
    }
  },
  "highlight": {
    "fields": {
      "contents": {}
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我将查询更改为使用普通分析器,则只需几毫秒:

{
  "size": 500,
  "query": {
    "query_string": {
      "query": "\"CATERPILLAR FINANCIAL SERVICES ASIA PTE LTD\"~5",
      "fields": [
        "contents"
      ],
      "default_operator": "and",
    }
  },
  "highlight": {
    "fields": {
      "contents": {"type" : "plain"}
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我已经查看了荧光笔的不同选项(例如fragment_size,fragment_offset,phrase_limit),但是没有什么可以立即显示为可以设置以提高性能. …

lucene performance highlighting elasticsearch

5
推荐指数
1
解决办法
1665
查看次数

如何提高ios中的语音识别数字输入?

我正在使用ios语音识别,只要有足够的上下文,它就会很好.我正在使用语音识别仅用于数字输入并且看到问题.例如,使用单个数字(例如2 - ,或8 - ate); 没有足够的背景.或者甚至有两位数字(80有时被翻译为白痴).我想向语音识别器表明输入将是数字.例如,如果输入是"数字2",那么语音识别器就能完成出色的工作.

我已经玩了一些提示--SFSpeechRecognitionTaskHint(未指定,听写,搜索,确认) - 但这些模式都不适合数字输入.

所以,问题是:

  • 有没有办法向SFSpeechRecognizer提示音频是否为数字?要么
  • 还有另一种语音识别技术可能更适合我的需求吗?

另请注意,我希望这也适用于许多不同的语言(不仅仅是英语).

谢谢你的帮助,埃里克

speech-recognition ios sfspeechrecognizer

5
推荐指数
1
解决办法
850
查看次数

如何使用实体框架4.3(代码优先)和SQL Azure数据库记录SQL

我意识到这个类似的问题已被问过几次,我在这些问题中尝试过这些建议而没有成功.

我正在使用实体框架(4.3)并针对SQL Azure运行(在联合数据库上).我希望能够记录实体框架生成的SQL.

我已经使用了实体分析器框架,虽然这在开发过程中很有用,但我不确定它在生产过程中是否有用.

我无法使用SQL事件探查器,因为这是一个SQL Azure数据库.

我已尝试使用EFTracingProvider并按照此处的步骤操作.不幸的是,当我尝试执行我的第一个命令(使用适当的联合)时,我得到一个异常,表明"不支持指定的方法".

生成错误的代码如下:

public MyContext(int tenantId) 
    : base(CreateTracingConnection("TheDb"), true)
{
    const string FederationCmdText =
        "USE FEDERATION TenantFederation(CustomerId = {0}) WITH RESET, FILTERING=ON";

    ((IObjectContextAdapter)this).ObjectContext.EnableTracing();

    ((IObjectContextAdapter)this).ObjectContext.Connection.Open();

    // This is the line which throws the exception
    this.Database.ExecuteSqlCommand(string.Format(FederationCmdText, tenantId));        
}
Run Code Online (Sandbox Code Playgroud)

这是例外:

Specified method is not supported.
at EFProviderWrapperToolkit.DbConnectionWrapper.CreateDbCommand()
at System.Data.Common.DbConnection.CreateCommand()
...
Run Code Online (Sandbox Code Playgroud)

所以这是我的问题:

  • EFTracingProvider是否是记录SQL查询(全局)的首选方法?
  • 如果是这样,任何想法为什么我得到上述例外?
  • 如果没有,是否有另一种机制可以让我记录实体框架生成的所有SQL?

谢谢你的帮助,埃里克

entity-framework ef-code-first azure-sql-database

4
推荐指数
1
解决办法
1558
查看次数

长查询的ElasticSearch,Nest和超时

我正在使用带有Nest的ElasticSearch(0.9.16)并且有一些查询需要超过60秒.发生这种情况时,我收到以下错误:

var setting = new ConnectionSettings(new Uri(searchUrl)).SetTimeout(200000);
Run Code Online (Sandbox Code Playgroud)

虽然我担心查询花了这么长时间,但对于这个问题,如果有办法增加超时,我只是感兴趣.我一直无法找到增加超时的方法.

注意,我确实看到了几个可以设置超时的地方,但这些不是正确的地方:

searchdescriptor.Timeout("120000");
Run Code Online (Sandbox Code Playgroud)

要么

var setting = new ConnectionSettings(new Uri(searchUrl)).SetTimeout(200000);
Run Code Online (Sandbox Code Playgroud)

第一个设置连接超时,第二个设置ElasticSearch超时,这两个都没有帮助.

谢谢,埃里克

elasticsearch nest

4
推荐指数
1
解决办法
3583
查看次数

使用c#驱动程序在Cassandra中将UDT元素添加到列表集合的正确方法是什么?

我有一个UDT列表,如:

create table MyTable
{
  ...
  stuff list<frozen<MyType>>,
  ...
}
Run Code Online (Sandbox Code Playgroud)

在我的客户端代码中,我想将一个元素附加到"stuff".理想情况下,我想做以下(或类似的事情):

this.Mapper<MyTable>("SET stuff = stuff + [?] WHERE id = ?", mytype, id);
Run Code Online (Sandbox Code Playgroud)

不幸的是,这失败并出现以下错误:

Invalid list literal for stuff: bind variables are not supported inside collection literals
Run Code Online (Sandbox Code Playgroud)

我可以通过将mytype转换为json来实现这一点,例如:

var stuffAsJson = stuff.ToJson();
var update = string.Format("SET stuff = stuff + [{0}] WHERE id = ?", commentAsJson);
this.Mapper.Update<MyTable>(update, stuffAsJson, id);
Run Code Online (Sandbox Code Playgroud)

但是,知道如何将对象转换为json是很棘手的(例如,不是引用带双引号的字符,而是需要引用单引号).

因此,我希望有更好的方法将类型元素添加到列表中.

谢谢你的帮助,埃里克

c# cassandra

3
推荐指数
1
解决办法
1201
查看次数