2013-02-21 2 views
0

Моя установка solr предлагает только окурки слов, а не полные слова.solr не предлагает полные слова

Если я ищу проводник я получаю результаты так:

<int name="conductor">68</int> 
<int name="symphoni">51</int> 
<int name="no.">46</int> 
<int name="rattl">28</int> 

Что я хотел бы иметь бы:

  • симфонических вместо syphoni
  • погремушки (Simon Rattle, а проводник) вместо rattl

и так далее.

Полный генерируется запрос:

select?fl=abstract&facet=true&facet.field=abstract&facetlimit=8&facet.mincount=1&omitHeader=true&qf=content%5E40.0+title%5E5.0+keywords%5E2.0+tagsH1%5E5.0+tagsH2H3%5E3.0+tagsH4H5H6%5E2.0+tagsInline&json.nl=map&q=conductor&start=0&rows=5 

Я использую TYPO3 так конфигурации XML можно найти здесь:

https://github.com/subugoe/typo3-solr/blob/master/resources/solr/typo3cores/conf/solrconfig.xml

И схему можно найти здесь:

https://github.com/subugoe/typo3-solr/blob/master/resources/solr/typo3cores/conf/english/schema.xml

ответ

1

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

1

arun верен, эта проблема связана с тем, что вы извлекаете грани для поля, которое обрабатывается анализаторами индексов. Я посмотрел на другие определения fieldType, предоставленные TYPO3, и поле textSpell fieldType выглядит многообещающим.

Я предложил бы добавить следующее в файл general_schema_fields.xml ..

<field name="abstract_facet" type="textSpell" indexed="true" stored="true" /> 
<copyfield source="abstract" dest="abstract_facet" /> 

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

select?fl=abstract&facet=true&facet.field=abstract_facet&facetlimit=8&facet.mincount=1 
    &omitHeader=true&qf=content%5E40.0+title%5E5.0+keywords%5E2.0+tagsH1%5E5.0 
    +tagsH2H3%5E3.0+tagsH4H5H6%5E2.0+tagsInline 
    &json.nl=map&q=conductor&start=0&rows=5 

Если это не полностью удовлетворить свои потребности, я бы рекомендовал проверить на Solr Wiki - Analyzers, Tokenizers and Token Filters Дополнительных указаний о том, как значения обрабатываются и сохраняются в индексе. В конечном счете, вы можете создать совершенно отдельный fieldType для использования с огранкой.

+0

Хорошо. Спасибо. Я перевел пример (оригинал находится на немецком языке), но у меня есть два языка. Нужно ли мне для этого два соляных ядра или проблема не имеет к этому никакого отношения? – shredding

+1

Я не уверен, что смогу ответить на этот вопрос. Это будет зависеть от того, будет ли хранение обоих языков в одних и тех же полях подходящим для ваших случаев использования. –

+0

Теперь я тестировал все, но теперь результирующие грани просто пустые :( – shredding

Смежные вопросы