2013-01-22 4 views
1

Я хочу что-то токенизировать данные на основе данных фраз в файле .txt. Обычно запрос фасета дает мне пустое пространство для токенов. Но я хочу, чтобы результат был таким.Как tokenize фраза в Solr и получить грани

для например мои данные «ааа БББ-ссс ддд еее» для поля «test_data» грани должны быть как этот

<lst name="test_data"> 
    <int name="aaa">1</int> 
    <int name="bbb-ccc">1</int> 
    <int name="ddd eee">1</int> 
</lst> 

и Somefile.txt будет «БББ-КТС» & «ДДД еее», как фразы

Благодаря

ответ

0

Если вы не хотите, чтобы построить свой собственный Tokenizer, вы могли бы использовать PatternTokenizer:

Например, у вас есть список терминов, помеченных точкой с запятой и ноль или более пробелов: мыши; котята; собаки.

<fieldType name="semicolonDelimited" class="solr.TextField"> 
    <analyzer> 
    <tokenizer class="solr.PatternTokenizerFactory" pattern=";\s*" /> 
    </analyzer> 
</fieldType> 

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.PatternTokenizerFactory

Таким образом, вы можете добавить свои собственные регулярные выражения с ГЭБ-ссс в нем.

+0

Но картина не фиксируется. Я хочу, чтобы некоторые фиксированные слова/фразы были обозначены, отдых можно игнорировать. Я хочу указать список в .txt-файле, как в stopwords.txt, для игнорирования некоторых слов. Я хочу прямо противоположно этому, просто включив некоторые предопределенные слова. –

1

Я только что узнал, что KeepWordFilterFactory может выполнить эту работу. Я добавил этот FieldType в схеме

<fieldType name="text_keepword" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.KeepWordFilterFactory" words="keepwords.txt" ignoreCase="false" enablePositionIncrements="false"/> 
    </analyzer> 
</fieldType> 

и это поле

<field name="keep_fld" type="text_keepword" indexed="true" stored="true"/> 
Смежные вопросы