我有一个文件组件Main.Vue.
我还有三个其他单个文件组件A.vue,B.vue和C.vue.
我希望每次都能在Main.Vue内部显示一个不同的组件.我做的是这样的:
<template>
<div>
<a v-if="isAVisible" ></a>
<b v-if="isBVisible" ></a>
</div>
</template>
<script>
import A from './A.vue';
import B from './B.vue';
...
Run Code Online (Sandbox Code Playgroud)
这可行但不完全是我想要的.我想要一个不同的文件Factory.js,它可以导入所有组件A,B,C,..并且具有返回我的组件的函数,我可以在Main.vue中以某种方式使用它.这是我试过Factory.js的样子:
import A from './A.vue';
import B from './B.vue';
function getComponent(){
if (..)
return new A();
else if (..)
return new B();
...
}
Run Code Online (Sandbox Code Playgroud)
这根本不起作用.我想要工厂文件方法,因为:
1)我想将它拆分为不同的工厂文件
2)我想"附加"数据到每个组件.所以我将有一个对象,其中包含返回实际组件的函数+一些额外的数据,如"name"
任何想法如何做到这一点?
我将 Lucene .Net 4.8 与以下分析器一起使用:
private static Analyzer CreateAnalyzer()
{
return Analyzer.NewAnonymous(createComponents: (fieldName, reader) =>
{
var source = new WhitespaceTokenizer(Lucene.Net.Util.LuceneVersion.LUCENE_48, reader);
TokenStream result = new WordDelimiterFilter(Lucene.Net.Util.LuceneVersion.LUCENE_48, source,
~WordDelimiterFlags.STEM_ENGLISH_POSSESSIVE,
CharArraySet.EMPTY_SET);
result = new LowerCaseFilter(Lucene.Net.Util.LuceneVersion.LUCENE_48, result);
return new TokenStreamComponents(source, result);
});
}
Run Code Online (Sandbox Code Playgroud)
这适用于我 95% 的用例。例如,对于句子“Hello MacDonald”,以下所有内容都将返回一个匹配项:“Hello”、“mac”、“dona”。
我的问题来自这样的电子邮件:“JoshSmith@microsoft.com”
当前搜索“Microsoft”或“com”将返回匹配项。但是,由于我的 WordDelimiterFilter 在 '.' 处停止,搜索“microsoft.com”不会返回匹配项。
最理想的是,我想同时索引“microsoft.com”和“com”,因此搜索两者都会返回匹配项。我愿意让 Lucene 处理 dot '.' 作为常规字符并仅索引“microsoft.com”。
我尝试在最后一个参数而不是“CharArraySet.EMPTY_SET”中写入以下内容:
new CharArraySet(Lucene.Net.Util.LuceneVersion.LUCENE_48, new List<string>() { "." }, true)
Run Code Online (Sandbox Code Playgroud)
没有帮助。
任何人都可以帮忙吗?