Ruby on rails 在太阳黑子中使用edgeNGram滤波器
我正在尝试使用EdgeNGramFilterFactory为名称字段编制索引。我试着模仿schema.xmlRuby on rails 在太阳黑子中使用edgeNGram滤波器,ruby-on-rails,solr,sunspot,Ruby On Rails,Solr,Sunspot,我正在尝试使用EdgeNGramFilterFactory为名称字段编制索引。我试着模仿schema.xml <fieldType name="text_prefix" class="solr.TextField" omitNorms="false"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="so
<fieldType name="text_prefix" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.TrimFilterFactory" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="20" side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.TrimFilterFactory" />
</analyzer>
</fieldType>
...
<field name="text_prefix" stored="false" type="string" multiValued="true" indexed="true"/>
然而,它似乎没有任何效果。我遗漏了什么?您的模式看起来不错,除了一件事:您的
text\u prefix
字段的类型为string
,而不是text\u prefix
,因此它不使用EdgeNGramFilterFactory
你应该换一行
<field name="text_prefix" stored="false" type="string" multiValued="true" indexed="true"/>
像这样
<field name="text_prefix" stored="false" type="text_prefix" multiValued="true" indexed="true"/>
你说没有效果是什么意思?你在查什么??你在查询什么?我想搜索“Ne”并获得像“纽约”这样的条目。目前它没有返回任何内容。谢谢,它工作正常。但是你知道为什么内置的@lulalala很高兴知道它能工作。对不起,我不明白你的问题,你能重新措辞吗?通常字符串字段类型没有标记化等。它只是一个简单的字符串。别担心,我现在就知道了。Sunspot's说它的默认字段类型是“文本”,但它实际上是一个动态的“文本”字段,而不是实际上是字符串的静态“文本”类型。
<field name="text_prefix" stored="false" type="text_prefix" multiValued="true" indexed="true"/>