2

お客様の環境で奇妙な動作をしています。Luceneでインデックスを設定しましたSitecore。変化した母音 (ウムラウト、äöü例えばなどZürich) を含むキーワードでインデックスを検索すると、いくつかの結果があっても結果が返されません。私たちの環境では、これは問題なく機能します。私が知る限り、ソリューションの構成とセットアップは両方のシステムで同じです。

で両方のインデックスを見てきましたLuke。それらも同じようです。変異した母音を含むキーワードで検索すると、 と同じ結果が返されましたLuke。したがって、クエリが異なるように見えるだけで、インデックス作成自体は問題ないはずです。

オペレーティングシステムまたはそれ自体に構成/インストールが欠落しているに違いないと考えていますIIS。それとも、他に何が原因でしょうか?

似たような経験をした人はいますか?

ありがとう、セルジュ

4

2 に答える 2

0

お客様の環境で何が起こっているのかわかりませんが、以下の解決策は、この問題だけでなく、特殊文字を含む単語の検索に起因する他の問題にも役立つ可能性があります。

次のメソッドは、テキストの文字列から分音記号を取り除きます。たとえば、渡すとZürichが返されZurichます。秘訣は、インデックスを作成する前に、このメソッドを介してコンテンツを渡すことです。Sitecore 6 では、DatabaseCrawler のカスタム実装でこれを行うことができます。Sitecore 7 では、計算フィールドが適切な候補になる可能性があります。

public static string NormalizeDiacritics(this string input)
{
    if (String.IsNullOrEmpty(input)) return String.Empty;

    var sb = new StringBuilder();
    foreach (var c in input.Normalize(NormalizationForm.FormD))
    {
        if (char.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark)
            sb.Append(c);
    }

    return sb.ToString();
}

次のステップでは、訪問者の検索クエリも同じ方法で渡します。Zürichこれにより、 または のいずれかZurichを検索すると常に結果が返されることが保証されます。多くの訪問者はオンラインで検索するときに特殊文字を入力するのに時間をかけないため、これは特に便利です (少なくとも英語を話す訪問者には当てはまります)。

于 2013-11-07T14:44:52.483 に答える