Search a term in Japanese

Thank you for your reply.

  1. A sample paragraph here in katakana
    通報テスト9,通報テスト11,通報テスト8…etc

  2. A sample search term that you have that is not working
    テスト
    The “テスト” is not working.


    But the “通報” or “通報テスト” seems to be working correctly.

  3. Confirmation that your site locale is in Japanese or that search tokenize chinese japanese korean is enabled
    Yes, I have confirmed that both settings are set correctly.


1 „Gefällt mir“

An incredible thing happened. After changing the ‘min search term length’ from the default value of 2 to 1, we are now able to search for katakana. I don’t know why, but is this setting relevant?

1 „Gefällt mir“

I can repro this and it is mainly due to a combination of

https://github.com/discourse/discourse/blob/e8a842ab8cbbabe92fe33cfc4bbe5f839d4543e9/lib/search.rb#L66-L69

and

https://github.com/discourse/discourse/blob/e8a842ab8cbbabe92fe33cfc4bbe5f839d4543e9/lib/search.rb#L242-L243

The term テスト is converted to テ ス ト after going through CppjiebaRb and this trips the min_search_length protector we have.

@sam This is tricky to fix because we need a proper tokenizer for Japanese to resolve search issues like this for good. We can do tweaks here and there but it is going to be a game of wack a mole.

3 „Gefällt mir“

I don’t think there exists a proper Japanese segmentar we can use.

I think the best thing to do here is simply tone down these defaults to 1.

https://github.com/discourse/discourse/blob/580383dff342a9a12f2270a8224b91c12f0e6ca7/config/site_settings.yml#L1837-L1844

Otherwise we are banning people from searching for house in Japanese which seems reasonable (家) … we allow people to search for house in English.

2 „Gefällt mir“

Ich benutze Ruby heutzutage nicht mehr und kenne auch nicht die Anforderungen von Discourse, aber es scheint ein Gem für „MeCab“ zu geben.

Ich bin auf dieses Thema gestoßen, weil ich festgestellt habe, dass die Suche nach einigen Wörtern auf meiner gehosteten öffentlichen Instanz nicht funktioniert. Ich habe

  • min search term length: 1
  • search tokenize chinese japanese korean: enabled
  • default locale: Japanese

Soweit ich mich erinnere, habe ich die Website mit englischer Locale initialisiert und die Einstellung später auf Japanisch geändert.

Die Wörter, bei denen die Suche fehlschlug, sind „北側“, „真上“, „一般“. Diese Wörter befinden sich in diesem Thema. Viele Wörter funktionieren, aber diese nicht. Ich sehe kein Muster, ob ein Wort funktioniert oder nicht.

Gibt es eine Möglichkeit, den generierten Suchindex auf der gehosteten Instanz zu überprüfen? Ich kann sowohl Ruby als auch Japanisch lesen. Wenn es also eine Möglichkeit gibt zu sehen, wie Discourse den Suchindex für CJK generiert, könnte ich vielleicht helfen.

CppjiebaRb oder cppjieba, das von @tgxworld erwähnt wurde, scheint für Chinesisch zu sein. Wird es für die japanische Locale verwendet?

2 „Gefällt mir“

Mecab ist leider keine Option, es ist GPL und wir bevorzugen es, nur MIT- und BSD-Lizenzen bei Abhängigkeiten zu verwenden.

Wir haben einen PR, der TinySegmenter: Javascriptだけで実装されたコンパクトな分かち書きソフトウェア hinzufügt, das eine kompatible Lizenz hat. Können Sie das Segmentieren ausprobieren und uns mitteilen, wie gut es funktioniert? Es gibt ein Formular auf der Website, das Sie zum Testen verwenden können.

2 „Gefällt mir“

Ich habe tiny_segmenter von Rubygems ausprobiert und es generiert zumindest die Wörter, die ich im vorherigen Kommentar aufgelistet habe.

# coding: utf-8
require 'tiny_segmenter'
require 'pp'

s = File.read('topic27.txt')

ts = TinySegmenter.new
sg = ts.segment(s, ignore_punctuation: true)
pp(sg)
bundle exec ruby test.rb | grep -e 北側 -e 真上 -e 一般
 "北側",
 "真上",
 "一般",
 "一般",
 "一般",
 "北側",
 "一般",

Eine schnelle Suche nach TinySegmenter hat mir gesagt, dass das verwendete Modell nicht so gut ist. Es gibt einen Modellgenerator dafür.

Ich habe es aber noch nicht ausprobiert.

3 „Gefällt mir“