2011-02-02 10 views
8

私たちは、sitecoreの一部としてテキスト検索にLuceneを使用しています。 サイト検索で停止語(a、an、the ...など)を無視する方法はありますか?sitecoreでストップワード

+0

このユースケースは何ですか?あなたが**帽子の**猫を検索する場合**あなたは本当にちょうどあなたが**猫の帽子**を入力したかのように検索したいですか?それとも、結果をフィルタリングするのですか? –

答えて

14

デフォルトでは、SitecoreはLucene標準アナライザー-Lucene.Net.Analysis.Standard.StandardAnalyzerを使用します。これはweb.configファイルの/configuration/sitecore/search/analyzer要素に定義されています。 StandardAnalyzerクラスのコンストラクタの1つは、ストップワードを考慮するストリングの配列を受け入れます。デフォルトでは、それが含まストップワードのハードコードされたリストを使用しています、「時」「のように」「A」、「an」は、「及び」、「ある」、

、 は「、「で」が、 "into"、 "is"、 "it"、 "not"、 "not"、 "of"、 "on"、 "or"、 "for"、 "if" "they"、 "this"、 "to"、 "was"、 "will"、 "such"、 "that"、 "the"、 " "、 "then"、 "there" 」、 『

』とあなたは、この動作を無効にしたい場合は、私はあなたがStandardAnalyzerを継承し、停止ワットを取るために、そのデフォルトコンストラクタをオーバーライドするべきだと思いますハードコードされた配列の代わりに別のソースからのords。さまざまなオプションがあり、テキストファイルから読み込むことさえできます。 web.configで標準クラスをあなたのものに置き換えることを忘れないでください。

詳細については、StandardAnalyzerクラスの他のコンストラクタを参照してください。 .NET Reflectorはあなたの友人です。 Yansポストのため

+0

ありがとう..あなたがコードの心を共有することができれば.. – rahul

+0

どういう意味ですか?上の答えで私が参照しているコードはLucene.Net.dll(Sitecore/binフォルダ内)に置かれています。 .NET Reflectorを使用して、このサードパーティのライブラリを閲覧することができます。あなたのケースで私が提案するのは、新しいクラスを作成し、StandardAnalyzerから継承し、デフォルトのコンストラクタが別の方法(選択方法)でストップワードを検索するようにすることです。 StandardAnalyzerクラスの他のコンストラクタのコードには、この例があります。 –

+1

ところで、Alex Shybaは、Sitecore&Luceneでの検索についての驚くばかりの概要ブログ記事を公開しました:http://sitecoreblog.alexshyba.com/2011/02/8-reasons-to-use-new-search-in-sitecore。 html。この投稿には、トピックに関するさまざまなリソースへの便利なリンクもあります。このエリアで前進する前に必ず確認してください! –

4

例:

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) 
    {  
    } 
} 

これはあなたが最後に

/configuration/sitecore/search/analyzer 

下web.configファイルでアナライザ登録

<caseanalyzer type="EBF.Business.Search.Analyzers.CaseAnalyzer, EBF.Business, Version=1.0.0.0, Culture=neutral"/> 

の例を登録する必要がありますthiのような検索設定でアナライザーを登録するだけですs

<Analyzer ref="search/caseanalyzer" /> 
関連する問題