问题标签 [pattern-synonyms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
85 浏览

haskell - 模式同义词作为可重载的“智能构造函数”

在接口 ( ) 中包含“智能构造函数”方法是一种优良传统class

将它们作为模式同义词提供会很好:

但是您不能将 PatSyns 放在类中。我有一些工作,但它似乎有很多丑陋的代码。任何人都可以建议清理它的方法吗?(下面列出了具体的丑陋。)

  • 令人讨厌的是,这些必须是明确的双向模式;特别是因为 'under where' 行与实例重载如此直接可比。
  • 对于empty模式,我必须引入一个明确的(==)测试和支持Eq约束——以实现简单的模式匹配。(我想我可以调用一个isEmpty方法。)
  • 对于该singleton模式,我避免了显式(==)测试,但需要在类中的方法上加倍。
  • 我真的不喜欢ViewPatterns;我希望 PatSyns 可以提供一些方法来避免它们。
0 投票
0 回答
34 浏览

elasticsearch - 在 Elasticsearch 中使用同义词生成带状疱疹

我的索引中的术语有一个备用拼写文件。我想生成包含特定术语的替代拼写的二元组。例如,我biriyani, biryani, briyani的备用拼写 csv 文件中有我的字段包含文本Chicken Biryani。我希望能够生产chicken biryani, chicken biriyani, chicken briyani代币。

现在,如果我使用带有同义词过滤器的空白标记器,则会生成chicken, biriyani, biryani, briyani预期的以下标记。现在,如果我应用 shingle 过滤器,则生成的令牌是chicken, chicken biryani, biryani, biryani biriyani, biriyani, biriyani briyani, briyani. 此标记流包含单词本身的同义词的带状疱疹,这些同义词不应该存在,并且它不包含带有chicken [alternate spellings of biryani]像 chicken biriyani 或 chicken briyani 等的标记。如果我在同义词过滤器之前放置 shingle 过滤器,那么它只会添加同义词标记一元:chicken, chicken biryani, biriyani, biryani, briyani。有没有办法生成包含与原始标记相同位置的同义词的标记,或者在这种情况下chicken biryani, chicken biriyani, chicken briyani

测试示例设置:

我正在运行 Elasticsearch 5.6