2014-01-04 2 views
0

Я пытаюсь реализовать функцию автоматического предложения с помощью solr, используя несколько полей, которые должны поддерживать разные токенизаторы. Сценарий я хочу сделать это, как показано ниже:Solr Spellchecker Component (Suggestester) для фразы через несколько полей (с разными токенизаторами)

Есть два поля автора (KeywordTokenizer) & субъект (StandardTokenizer), которые копируются в автозаполнением (используется как spellcheck.field)

<field name="author" type="phrase" indexed="true" stored="true" multiValued="false"/> 
<field name="subject" type="text_general" indexed="true" stored="true"/> 
<field name="autosuggest" type="text_general" indexed="true" stored="true"  multiValued="true"/> 
<copyField source="*" dest="autosuggest"/> 
<fieldType name="phrase" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer> 
    <tokenizer class="solr.KeywordTokenizerFactory" /> 
    <filter class="solr.LowerCaseFilterFactory" /> 
    <filter class="solr.RemoveDuplicatesTokenFilterFactory" />   
    </analyzer> 
</fieldType> 

значения Примеры: Тема - «Dell увеличить широкоэкранный UltraSharp 3007WFP»; Автор - "Del Stiller"

Запрос на поиск: solr/select? Q = de; Ожидаемый результат: лощина, дель Стиллер

В результате будут изменения основаны на FieldType присвоенного autosuggest.However то, что мне нужно, чтобы скопировать лексемы из каждого поля «автозаполнение» вместо копирования значений, а позже токенизатор создание новых маркеров на значения сопоставленного поля.

Я использую Solr 4.5.1

ответ

0

, что здесь происходит то, что хранится = истина сохраняется исходное значение в целевом поле тоже.

Для вашего простого случая использования, используя TermsComponent, может быть достаточно, посмотрите, как это сделать here, где говорится: «Использовать в автозаполнении». Это будет работать, поскольку термины возвращаются этим компонентом, а не сохраненными значениями.