2012-03-11 2 views
2

Я использую камень рубин SunSpot с Solr 1.4.1Solr (солнечное пятно) Запрос с дефисом и игнорируемыми словами

У меня есть проблема вокруг поиска с дефисом.

Когда я запускаю поиск «foo bar bla», ожидаемый результат возвращается.

Когда дефисс включен в поисковый запрос типа «foo - bar bla», результат не возвращается.

Я добавил дефисы в свой список прекрасных слов и за последние несколько дней изменил свой файл schema.xml разными способами, но безрезультатно.

Для тех, кто с воздействием солнечных пятен у меня есть минимальное совпадение слова устанавливается равным 3, который является таким же, как установка такой же мм конфигурации в файле solrconfig.xml, например: 3

Это, как соответствующие части мой файл schema.xml выглядит.

<!-- *** This fieldType is used by Sunspot! *** --> 
<fieldType name="string" class="solr.StrField" tokenized="true" omitNorms="true" sortMissingLast="true"> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.ASCIIFoldingFilterFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.PorterStemFilterFactory"/> 
    <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
    </analyzer> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.ASCIIFoldingFilterFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false" /> 
    <filter class="solr.PorterStemFilterFactory"/> 
    <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15" side="front"/> 
    </analyzer> 
</fieldType> 

<!-- *** This fieldType is used by Sunspot! *** --> 
<fieldType name="text" class="solr.TextField" omitNorms="false"> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.ASCIIFoldingFilterFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.PorterStemFilterFactory"/> 
    <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
    </analyzer> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.ASCIIFoldingFilterFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false" /> 
    <filter class="solr.PorterStemFilterFactory"/> 
    <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15" side="front"/> 
    </analyzer> 
</fieldType> 

Любая помощь или предложения были бы высоко оценены.

Спасибо,

ответ

6

дефиса символов (-) является оператором Solr используется для исключения результатов, соответствующих слову, которое следует за оператором. Я не думаю, что добавление дефиса в список остановленных слов повлияет на это. Я бы предложил снять дескрипторы перед запуском запроса через Solr. Я предполагаю, что происходит то, что результат с дефисом исключает документы, соответствующие «бару»? Возможно, вы могли бы попытаться украсить результаты, чтобы убедиться, что это так.

+0

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

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