Поиск на нескольких языках Solr

#.net #solr #sitecore

#.net #solr #sitecore

Вопрос:

Я хочу знать, как мне следует настроить Solr для многоязычного поиска. У меня есть веб-сайт, на котором есть поиск по Solr. Это работает для английского, я хочу, чтобы это работало для всех языков.

Ниже приведена моя схема..

 <field name="url" type="string" indexed="true" stored="true" required="true" multiValued="false" />
        <field name="title" type="text" indexed="true" stored="true" required="false" multiValued="false" />
        <field name="content" type="text" indexed="true" stored="true" required="true" multiValued="false" />
        <field name="contenttype" type="string" indexed="true" stored="true" required="false" multiValued="false" />
        <field name="contentsize" type="integer" indexed="false" stored="true" required="false" multiValued="false" />
        <field name="timestamp" type="date" indexed="true" stored="true" required="false" multiValued="false" />
        <field name="language" type="string" indexed="true" stored="true" required="false" multiValued="false" />
        <field name="description" type="text" indexed="true" stored="true" required="false" multiValued="false" />
        <field name="keywords" type="text" indexed="true" stored="true" required="false" multiValued="false" />    
    <field name="keywordsNoneStemmed" type="string" indexed="true" stored="true" required="false" multiValued="true" />    
        <field name="thumbnail" type="string" indexed="true" stored="true" required="false" multiValued="false" />
    <field name="virtualitem" type="boolean" indexed="true" stored="true" required="false" multiValued="false" />
    <field name="section" type="string" indexed="true" stored="true" required="false" multiValued="false"></field>
    </fields>
  

Когда я увидел файл журнала, Solr индексирует URL на разных языках, но я не знаю, как показать результат поиска.. Мой веб-сайт использует технологии .net

Ответ №1:

Волшебной палочки не существует. Если вы знаете язык входных текстов, то вы могли бы хранить языки в разных полях и использовать разные исходные элементы в зависимости от языка. Или вы могли бы избежать конечных элементов и вместо этого использовать ngrams.

Если вы продолжите использовать стоп-слова и защищенные слова, то вам нужно будет отредактировать их, чтобы они не были слишком агрессивными. Например, «is» и «by» являются стоп-словами в английском языке, но во многих скандинавских языках они означают «лед» и «город». Поэтому вы бы удалили их из стоп-слов, но, возможно, захотите добавить «je» и «il», потому что это французские стоп-слова. Но «je» имеет разные значения в таких языках, как голландский и сербский, так что, возможно, нет…

Начните с сокращения цепочки токенизаторов, анализаторов, фильтров, а затем проведите некоторое тестирование с людьми, свободно владеющими другими языками. Попросите их показать вам странные результаты и объяснить, почему они странные. И посмотрите на восточные языки, потому что нграммы — это действительно единственный способ справиться с ними.