Идеографическое пространство в solr-запросе

У меня проблема с solr, с которой я, похоже, не могу справиться...

При поиске "マルチェロ ブラック" (с обычным пробелом между словами) я получаю ожидаемые результаты (из них 15). Но при поиске "マルチェロ ブラック" (который по сути имеет идеографический пробел   между словами вместо обычного) я не получаю никаких результатов.

Моя конфигурация fieldType довольно проста:

<fieldType name="text_cjk" class="solr.TextField">
  <analyzer>
    <tokenizer class="solr.CJKTokenizerFactory"/>
  </analyzer>
</fieldType>

я пытался добавить

<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-japanese.txt"/>

с отображением, как

"\u3000" => "\u0020"

или даже

"\u3000" => " "

но это не помогло.

Также пытался добавить

<filter class="solr.PositionFilterFactory" />

как было предложено в Анализ языка: китайский, японский, корейский, но затем началось получение 200+ результатов для первого поиска и 1000+ результатов для второго. Тоже ничего хорошего.

Запуск solr версии 3.5, поэтому об использовании CJKBigramFilterFactory не может быть и речи. (Просто говорю, понятия не имею, поможет ли это в любом случае.)

Прочитал довольно много японских блогов по настройке solr (спасибо Google Chrome за такую ​​простоту!), но во всех примерах есть только CJKBigramFilterFactory, иногда с дополнительным LowerCaseFilterFactory, но ничего, что могло бы помочь в моем случае.

Любые идеи, что еще я мог бы попробовать сделать эту работу?


person Maciej Zgadzaj    schedule 28.08.2013    source источник


Ответы (2)


Мы используем Rosette от Basis tech для Lucene & Solr, но это не бесплатно.

person sidgate    schedule 29.08.2013

Что ж, на самом деле проблема оказалась в том, как модуль Drupal Search API анализирует строку запроса еще до передачи это решить. Исправлено с помощью небольшого патча для модуля, см. проблему Разделить запрос по пробелу, а не только по пробелу.

person Maciej Zgadzaj    schedule 29.08.2013