2015-06-10 3 views
0

Я работаю над применением рельсов и основан на поисковой системе Apache Solr, и мы используем драгоценный камень Sunspot. Но я столкнулся с одной проблемой: если я ищу запрос house rent, то он дает мне тысячи результатов, используя and query. Но результаты, которые я получаю, не актуальны.придавать большое значение документам, содержащим слово proximity + solr + sunspot

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

Мой schema.xml содержит следующее определение:

<fieldType name="text" class="solr.TextField" omitNorms="false"> 
    <analyzer> 
    <tokenizer class="solr.PatternTokenizerFactory" pattern="[\s,\.;\(\)]+"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
    <charFilter class="solr.HTMLStripCharFilterFactory"/> 
    <filter class="solr.PorterStemFilterFactory"/> 
    </analyzer> 
</fieldType> 

Для достижения этой цели, какие изменения нужно сделать? или какой-либо фильтр необходимо добавить для этого?

+0

Что тип поля используется для этой области? Не могли бы вы поделиться с Schema.xml? –

+0

Я использовал текстовое поле –

+0

Добавить информацию о поле «текст» Введите свой вопрос, было бы хорошо ответить на ваш вопрос ... –

ответ

0

Вы можете попробовать это

<fieldType name="shingleString" class="solr.TextField" positionIncrementGap="100" omitNorms="true"> 
     <analyzer type="index"> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.ShingleFilterFactory" outputUnigrams="true" outputUnigramIfNoNgram="true" maxShingleSize="99"/> 
     <filter class="solr.PositionFilterFactory" /> 
     </analyzer> 
    </fieldType> 
+0

, не работающее над этим решением. Получив тот же результат –

+0

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

+0

мой текст поиска - «аренда жилья», и я получаю результаты, но порядок результата неверен, первый документ содержит оба слова, но разрыв слов больше, и мой 7-й документ содержит аренду дома и есть 0 слово пробел. Поэтому я хочу, чтобы мой 7-й документ должен отображаться поверх первого документа. –

0

Использование фразы полей и повысить их или вы можете попробовать условия повышения как "house rent"~5