单个匹配的Solr searchField架构
我想编写一个特定的fieldType,它将如下面的示例所示工作:单个匹配的Solr searchField架构,solr,xsd,search-engine,Solr,Xsd,Search Engine,我想编写一个特定的fieldType,它将如下面的示例所示工作: 假设我们有一个名字:foomobar(f00B2r) “f”=>foo MooBar(f00B2r)(以及其他带有“f”的字符) “foo moob”=>foo MooBar(f00B2r)(以及其他带有“foo moob”的字符,等等) “foo(f0)=>foo MooBar(f00B2r) “moobar f”=>foo moobar(f00B2r) “(f00b2r)”=>foo MooBar(f00b2r) “条”=>
假设我们有一个名字:
foomobar(f00B2r)
- “f”=>
(以及其他带有“f”的字符)foo MooBar(f00B2r)
- “foo moob”=>
(以及其他带有“foo moob”的字符,等等)foo MooBar(f00B2r)
- “foo(f0)=>
foo MooBar(f00B2r)
- “moobar f”=>
foo moobar(f00B2r)
- “(f00b2r)”=>
foo MooBar(f00b2r)
- “条”=>无
- “moobar o”=>无
- “moob foo”=>无
<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>
附加说明对不起我的英语,谢谢;我的解决方案:
scheme.xml的一部分
<fieldType name="frontMatch" class="solr.TextField" positionIncrementGap="0" >
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<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>
;
搜索时,数字1000000等于运算符“和”。
因此,搜索查询看起来像:name:“moobar f”~1000000
;
其中name
是我们正在搜索的字段;我不知道第一个问题,但就第二个问题而言,您是否尝试过转义括号?例如,查询\(foob2r\)
,而不是(foob2r)
?