#.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» имеет разные значения в таких языках, как голландский и сербский, так что, возможно, нет…
Начните с сокращения цепочки токенизаторов, анализаторов, фильтров, а затем проведите некоторое тестирование с людьми, свободно владеющими другими языками. Попросите их показать вам странные результаты и объяснить, почему они странные. И посмотрите на восточные языки, потому что нграммы — это действительно единственный способ справиться с ними.