0

的Gemfile太陽黑子Solr的NGramFilterFactory不工作

gem 'rails','3.2.17' 
gem 'sunspot_rails' 
gem 'sunspot_solr' 

Gemfile.lock的

sunspot (2.1.0) 
    pr_geohash (~> 1.0) 
    rsolr (~> 1.0.7) 
sunspot_matchers (2.1.0.1) 
sunspot_rails (2.1.0) 
    nokogiri 
    rails (>= 3) 
    sunspot (= 2.1.0) 
sunspot_solr (2.1.0) 
therubyracer (0.12.1) 
    libv8 (~> 3.16.14.0) 
    ref 

schema.xml中

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="15" /> 
    <filter class="solr.PorterStemFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.PorterStemFilterFactory"/> 
    </analyzer> 
</fieldType> 

這裏是solrconfig.xml

我在導軌具有上述設置一個應用程序,solr-reindex完成後沒有任何錯誤。 當我嘗試搜索全字時,它會提取正確的結果,但子字符串搜索不起作用。 我錯過了什麼嗎?

感謝

+0

你確定要使用NGramFilterFactory而不是EdgeNGramFilterFactory?你能顯示可搜索的塊和一個搜索不起作用的例子嗎? – wawka

+0

是的,我想子字符串搜索,因此使用NGramFilterFactory 例如。搜索「ell」應該取「Hello」。 目前它只適用於全文搜索。 – Swati

回答

0

我已經實現Solr的搜索單個字符,但同樣可以爲任何數目的字符來完成。

步驟1.耙太陽黑子:solr的:停止

步驟2.編輯的solr/CONF/Schema.xml文件;

## This you have already done by setting minGramSize="2"

步驟3.耙太陽黑子:Solr的:開始

步驟4.耙太陽黑子:REINDEX

+0

我遵循了你提到過的同樣的步驟,但它仍然不適合我。我之前在其他rails應用程序中使用老版本的太陽黑子寶石完成了solr子串搜索。 這裏可能與寶石版本有些衝突,但不確定。 – Swati

+0

第四步之後,您需要重新啓動您的rails服務器。 – Addicted

+0

y ..嘗試重新啓動與導軌服務器..仍然不工作.. – Swati