Cerca un termine in giapponese

Grazie per la tua risposta.

  1. Un paragrafo di esempio qui in katakana
    通報テスト9, 通報テスト11, 通報テスト8… ecc.

  2. Un termine di ricerca di esempio che non funziona
    テスト
    Il termine “テスト” non funziona.


    Ma “通報” o “通報テスト” sembrano funzionare correttamente.

  3. Conferma che la località del tuo sito è in giapponese o che search tokenize chinese japanese korean è abilitato
    Sì, ho confermato che entrambe le impostazioni sono configurate correttamente.


È successo qualcosa di incredibile. Dopo aver modificato la ‘lunghezza minima della parola di ricerca’ dal valore predefinito di 2 a 1, ora siamo in grado di cercare in katakana. Non so perché, ma questa impostazione è rilevante?

Posso riprodurre il problema ed è dovuto principalmente a una combinazione di

e

Il termine テスト viene convertito in テ ス ト dopo aver attraversato CppjiebaRb, il che attiva il protettore min_search_length che abbiamo.

@sam È difficile da risolvere perché abbiamo bisogno di un tokenizzatore adeguato per il giapponese per risolvere definitivamente problemi di ricerca come questo. Possiamo apportare modifiche qui e là, ma sarà un gioco di “colpisci la talpa”.

Non credo esista un segmentatore giapponese adeguato che possiamo utilizzare.

Credo che la cosa migliore da fare qui sia semplicemente ridurre queste impostazioni predefinite a 1.

In caso contrario, stiamo impedendo alle persone di cercare “casa” in giapponese (家), il che sembra ragionevole… permettiamo alle persone di cercare “house” in inglese.

Non uso Ruby di questi tempi né conosco i requisiti di Discourse, ma sembra esserci una gemma per “MeCab”.

Sono arrivato a questo argomento perché ho scoperto che la ricerca di alcune parole non funziona sulla mia istanza pubblica ospitata. Ho

  • lunghezza minima del termine di ricerca: 1
  • ricerca tokenizzata cinese giapponese coreano: abilitata
  • locale predefinito: giapponese

Se non ricordo male, ho inizializzato il sito con la locale inglese e poi ho cambiato l’impostazione in giapponese.

Le parole che ho trovato non ricercabili sono “北側”, “真上”, “一般”. Queste parole sono in questo argomento. Molte parole funzionano, ma queste no. Non vedo uno schema sul fatto che una parola funzioni o meno.

C’è un modo per controllare l’indice di ricerca generato sull’istanza ospitata? Posso leggere sia Ruby che giapponese, quindi se c’è un modo per vedere come Discourse genera l’indice di ricerca per CJK, potrei essere d’aiuto.

CppjiebaRb, o cppjieba, menzionato da @tgxworld sembra essere per il cinese. Viene utilizzato per la locale giapponese?

Mecab non è un’opzione, purtroppo, è GPL e preferiamo accettare solo licenze MIT e BSD nelle dipendenze.

Abbiamo una PR che aggiungerà TinySegmenter: Javascriptだけで実装されたコンパクトな分かち書きソフトウェア che ha una licenza compatibile. Potresti provare la segmentazione e farci sapere come funziona? C’è un modulo sul sito web che puoi usare per testare.

Ho provato tiny_segmenter da Rubygems e almeno genera le parole che ho elencato nel commento precedente.

# 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 一般
 "北側",
 "真上",
 "一般",
 "一般",
 "一般",
 "北側",
 "一般",

Una rapida ricerca su TinySegmenter mi ha detto che il modello che utilizza non è così buono. Esiste un generatore di modelli per esso.

Non l’ho ancora provato.