2015-08-04 3 views
0

Я хотел знать, есть ли способ в solr config, чтобы точно совпадало с тем, что было в фразах.Solr поиск точное слово без фраз

Пример:
Строка поиска: «Здравствуйте»
результат должен быть: «Привет»
и не должны содержать: «Привет мир», «Привет, привет»

Он должен искать точное совпадение к слову, но игнорировать это в фразах.

Спасибо.

ответ

1

Изменить поле Введите строку.

Убедитесь, что вы имеете ниже входа

<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/> 

Тип StrField не анализируется, но индексируется/сохранены.

Затем измените тип поля для ключа поля.

<field name="fieldName" type="string" indexed="true" stored="true"/> 

С этим он будет точно искать, поскольку там не будет никаких токенов.

или вариант может быть ниже использовать тип

<fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100"> 
<analyzer> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory" /> 
</analyzer> 
</fieldType> 

поля Здесь KeywordTokenizer не делает никакого фактического tokenizing, так что вся входная строка сохраняются в виде одного маркеров.

и LowerCase TokenFilter делает то, что вы ожидаете, что может быть, когда вы хотите, чтобы ваша сортировку/поиск, чтобы быть чувствителен к регистру

+0

. он возвращает 0 результатов. –

+0

вы можете поделиться schema.xml ...? вы переиндексировали то же самое? –

+0

. Я просто изменил тип «текст» на «строка», затем остановил/запустил службу tomcat –

1

Первоначально я думал о близости, но это не обязательно для вашего дела.

определяет поле типа String, говорят amn_name_ss --This является сохраненной строкой

Строка выглянет для точного поиска, когда искал с «»

Eg: amn_name_ss: «Hello» будет возвращать только документы который точно имеет значение Hello

Создать Docs как { "ID": "amn1", "amn_name_ss": "Hello", "типа": "AMN"} { "ID": "amn2", "amn_name_ss ":" Hello World "," type ":" AMN "}

Запрос: http://hostname:8080/solr/collection1/select?q=% 3A & FQ = тип% 3AAMN & мас = JSON & отступа = истинная

даст результат, как показано ниже enter image description here

Запрос: http://hostname:8080/solr/collection1/select?q=amn_name_ss%3A%22Hello%22&fq=type%3AAMN&wt=json&indent=true

даст результат, как показано ниже

enter image description here

+0

извините, я не слишком хорошо знаком с Solr. можете ли вы объяснить, как выполнять настройки близости? –

+0

Обновлен мой ответ –

+0

Итак, чтобы разрешить это поле поиска в виде строки? Нет необходимости в токенизаторах/анализаторах/фильтрах? –

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