Solr арабский поиск не работает, если слова не являются соседями - PullRequest
1 голос
/ 01 марта 2012

Пока что мое развертывание solr для набора арабских данных у меня работает отлично.Стеблирование и нормализация - все это просто фантастика.

Проблема сейчас в том, что арабский поиск не работает, если слова не образуют непрерывную фазу.Например, скажем, следующая фраза:

اسْمُهُ دَاوُدُ بْنُ أَبِي

работает отлично и дает мне нужные данные.Однако, если я ищу:

اسْمُهُ دَاوُدُ أَبِي

Тогда я получаю 0 результатов.Обратите внимание, что во второй строке просто отсутствует одно из слов из строки выше.

Я смогу получить результаты, даже если слова не появляются рядом друг с другом в самом тексте.

Любые идеи будут высоко оценены.Моя схема выглядит следующим образом:

<fieldType name="text_general_arabic" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="arabic_stopwords.txt" enablePositionIncrements="true" />
    <filter class="solr.ArabicNormalizationFilterFactory"/>
    <filter class="solr.ArabicStemFilterFactory"/>    
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="arabic_stopwords.txt" enablePositionIncrements="true" />
    <filter class="solr.ArabicNormalizationFilterFactory"/>
    <filter class="solr.ArabicStemFilterFactory"/>    
  </analyzer>
</fieldType>

1 Ответ

0 голосов
/ 23 февраля 2014

попробуйте использовать dismax вместо solr обычного логического запроса, который дает поиск фраз и поиск по полям, потому что вы делаете запрос фраз.

пример:

q = أحمد + فنان + مجتهد & wt= json & indent = true & defType = edismax & qf = title_ar + title_en + title & mm = 70% 25 & stopwords = true & lowercaseOperators = true

, как вы увидите в ответе, я получаю совпадение, но не точное совпадение, проверьте выражение выше, которое вы увидите, мм(«минимальное совпадение») установлено на 70%, это означает, что 70% фразы должны совпадать.для получения дополнительной информации см. (https://wiki.apache.org/solr/ExtendedDisMax) результат запроса выше:

{"responseHeader": {"status": 0, "QTime": 1, "params": {"lowercaseOperators"":" true "," mm ":" 70% "," indent ":" true "," uf ":" title_ar title_en title "," q ":" أحمد فنان مجتهد "," qf ":" title_ar title_entitle "," _ ":" 1393151025195 "," stopwords ":" true "," wt ":" json "," defType ":" edismax "}}," response ": {" numFound ": 1," start": 0," docs ": [{" id ":" 1 "," title ": [" ahmad популярный исполнитель "]," title_en ": [" ahmad популярный исполнитель "]," title_ar ": ["أحمد فنان مشهور "]," версия": 1460824159992938500}]}}

...