问题标签 [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.
haskell - 模式同义词作为可重载的“智能构造函数”
在接口 ( ) 中包含“智能构造函数”方法是一种优良传统class
:
将它们作为模式同义词提供会很好:
但是您不能将 PatSyns 放在类中。我有一些工作,但它似乎有很多丑陋的代码。任何人都可以建议清理它的方法吗?(下面列出了具体的丑陋。)
- 令人讨厌的是,这些必须是明确的双向模式;特别是因为 'under
where
' 行与实例重载如此直接可比。 - 对于
empty
模式,我必须引入一个明确的(==)
测试和支持Eq
约束——以实现简单的模式匹配。(我想我可以调用一个isEmpty
方法。) - 对于该
singleton
模式,我避免了显式(==)
测试,但需要在类中的方法上加倍。 - 我真的不喜欢
ViewPatterns
;我希望 PatSyns 可以提供一些方法来避免它们。
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