0
我想写一个特定的字段类型,其工作方式如下面的示例所示:
假设我们有一个名称:foo MooBar (f00B2r)
;
Solr searchField模式的单个匹配
- “F”=>
foo MooBar (f00B2r)
(和其他人用 “F”) - “富moob”=>
foo MooBar (f00B2r)
(和其他与 “富moob” 等) - “富(F0" =>
foo MooBar (f00B2r)
- “moobar F”=>
foo MooBar (f00B2r)
- “(f00b2r)”=>
foo MooBar (f00B2r)
- “酒吧”=>无
- “moobar○”=>无
- “moob富”=>无
我的问题:
- 如果我搜索 “moobar F” 我会得到无;
- 如果我搜索“(f00b2r)”,我将无法获得;
我的字段类型Solr中/ conf目录/ schema.xml中:
<fieldType name="frontMatch" class="solr.TextField" positionIncrementGap="255">
<analyzer type="index">
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="255" side="front" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="255" side="front" />
</analyzer>
</fieldType>
附:
对不起,我的英文和谢谢;
我不知道第一个问题,但就第二个问题而言 - 您是否尝试过转义括号?例如,查询'(foob2r \)'而不是'(foob2r)'? – 2012-03-25 02:28:42