Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在太阳黑子中使用edgeNGram滤波器_Ruby On Rails_Solr_Sunspot - Fatal编程技术网

Ruby on rails 在太阳黑子中使用edgeNGram滤波器

Ruby 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

我正在尝试使用EdgeNGramFilterFactory为名称字段编制索引。我试着模仿schema.xml

<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"/>