2011-09-29 92 views
3

我正在solr中使用過去的搜索進行自動建議功能。 Synonyms.txt包含一個常見的拼寫錯誤/拼寫錯誤等列表。它設置爲在索引上運行,並在管理員中使用anaysis工具,我可以看到它工作正常 - 但它似乎不適用於實時數據。這似乎並沒有這樣的情況(即使分析工具,說那是什麼 -solr同義詞不被解析

Field type : 
<field name="suggest_ngrams" type="text_ngram" indexed="true" stored="false" multiValued="true" /> 

Schema: 
<fieldType name="text_ngram" class="solr.TextField" positionIncrementGap="100"> 
<analyzer type="index"> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_en.txt" enablePositionIncrement="true"/> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/> 
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/> 
</analyzer> 
<analyzer type="query"> 
<tokenizer class="solr.KeywordTokenizerFactory"/> 
<filter class="solr.LowerCaseFilterFactory"/> 
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_en.txt" enablePositionIncrement="true"/> 
</analyzer> 

and an example of synonyms.txt 
watch, watches, watche, watchs => watch 

所以在索引時間我希望「watche」與「看」來代替它在做什麼。

要清楚,如果我查詢的Solr(q = WATC)短語「watche」出現在結果

任何意見或洞察力,將不勝感激,因爲我覺得一切都設置correctl Ÿ

感謝

回答

1

如果我有問題正確: -
的同義詞只在指數時使用,不影響存儲的值。
所以你在分析中看到的是索引時間值,這似乎工作正常。
當您查詢solr並且它與此結果相匹配時,結果將僅返回「watche」,因爲這是存儲的原始值。
存儲的值永遠不會被修改,並按原樣保存並返回到響應中。

請澄清,如果我錯了。

+0

那之前,應用過濾器的數據是什麼林不知道 - 我的理解它的同義詞過濾器應替換爲「watche」 '看',當它做索引。所以'watche'根本不應該在索引中,不應該被返回到結果中。 –

+0

#顯式映射匹配「=>」的LHS上的任何標記序列,並替換RHS上的所有替代方案。這些類型的映射 #ignore模式中的擴展參數。 #示例: i-pod,i pod => ipod, 海洋餅乾,海biscit => seabiscuit –

+0

因此,我讀到的術語被替換,所以不應該出現在索引.... –

0

由於@Jayendra描述solr不會改變存儲值。因此你應該找到另一種處理這個障礙的方法。 就我而言,我想出了一個使用facet的解決方案。如果您在該字段方面您收到索引值(映射)。

另一種方案是你可以在一個單獨的進程將數據加載到Solr的