我們使用Lucene作爲sitecore的一部分進行文本搜索。 是否有任何方法可以忽略sitecore搜索中的停用詞(如a,an,...)?sitecore中的停用詞
回答
默認情況下,Sitecore使用Lucene標準分析器 - Lucene.Net.Analysis.Standard.StandardAnalyzer
。你可以看到這是在web.config文件的/configuration/sitecore/search/analyzer
元素中定義的。 StandardAnalyzer
類的構造函數之一接受字符串數組,它將視爲停用詞。默認情況下,它使用的停止詞,其中包括硬編碼的列表:
「一」,「一個」,「和」,「是」,「是」,「在」, 「是」,「但「,」by「,」for「,」if「,」in「, 」into「,」is「,」it「,」no「,」not「,」of「,」 「 「」,「這樣」,「那個」,「該」, 「他們」,「那麼」,「那裏」,「這些」, 「他們」,「這個」,「到」,「是」,「將」 ‘與’
如果你想覆蓋這種行爲,我想你應該繼承StandardAnalyzer
並覆蓋其默認構造函數採取停止w ^而不是硬編碼數組。你有各種選擇,甚至從文本文件中讀取它。不要忘記在web.config中用你的標準類來替換標準類。
請參閱StandardAnalyzer
類的其他構造函數以瞭解更多詳細信息。 .NET Reflector是你的朋友在這裏。
謝謝..如果你能分享代碼的心臟.. – rahul 2011-02-03 05:30:52
的創建者yans後一個例子:
public class CaseAnalyzer : Lucene.Net.Analysis.Standard.StandardAnalyzer
{
private static Hashtable stopWords = new Hashtable(); //{{"by","by"}}; <-- Makes "by" a stopword that will not be matched in analyzer
public CaseAnalyzer() : base(Lucene.Net.Util.Version.LUCENE_29, stopWords)
{
}
}
這應該在web.config中註冊下
/configuration/sitecore/search/analyzer
分析儀注冊的一個例子
<caseanalyzer type="EBF.Business.Search.Analyzers.CaseAnalyzer, EBF.Business, Version=1.0.0.0, Culture=neutral"/>
最後你只需要像搜索那樣在搜索配置中註冊你的分析儀s
<Analyzer ref="search/caseanalyzer" />
- 1. Sitecore 7 ContentSearch API是否從查詢中刪除停用詞?
- 2. 句子分詞器中的停用詞
- 3. excel VBA中的停用詞
- 4. RavenDB停用詞
- 5. 停用詞和同義詞在Nutch的
- 6. 刪除停用詞
- 7. PatternTokenizerFactory和停用詞
- 8. 在jquery中懸停()的懸停詞嗎?
- 9. Solr的高亮停用詞
- 10. Ruby的停用詞列表
- 11. Sitecore DMS停止錄製?
- 12. solr中的多字停用詞
- 13. 如何刪除java中的停用詞?
- 14. 刪除NLTK中的停用詞
- 15. 刪除句子中的停用詞
- 16. 刪除字符串中的停用詞
- 17. java中的停用詞去除
- 18. 如何覆蓋lucene中的停用詞
- 19. R tm removeWords停用詞不會刪除停用詞
- 20. dismax feat。停用詞,同義詞等
- 21. SOLR詞彙表和停用詞
- 22. 使用grep從停用詞文件中過濾掉單詞
- 23. 在Lucene 4.0+中使用詞幹+停用詞過濾
- 24. sitecore搜索同義詞文件位置
- 25. 停用詞去除F#
- 26. NLTK停用詞列表
- 27. 過濾出停用詞
- 28. Elasticsearch外語停用詞
- 29. Lucene,停用詞過濾器
- 30. Solr停用詞問題
這是什麼情況?如果你搜索**帽子裏的貓**你希望它真的只是搜索,就好像你輸入了**貓帽子**?或者你的意思是在結果中將它們濾除? – 2011-02-02 12:43:55