SOLR - точное совпадение с поиском по фразе и логическим поиском - PullRequest
4 голосов
/ 21 сентября 2011

Нам нужна помощь в настройке нашего развертывания SOLR для работы с возможностью поиска EXACT MATCH.

В частности, у нас есть поле типа текста в схеме, и мы хотим применить поиск точного совпадения с помощью поиска фраз и логических поисков.а также.

Например:

Пользователь вводит:

ДИРЕКТОР И (ФИНАНСЫ ИЛИ КОНТРОЛЛЕР ИЛИ УЧЕТ)

… .. Но, к сожалению, результатывозвращать записи со словами вроде:

ACCOUNT

CONTROLLING

и т. д.

Итак, по сути, SOLR ищет внутри слов - чтоконечно мы не хотим.(Да, это, по крайней мере, приоритезация этих результатов в самом КОНЦЕ набора результатов ... но, тем не менее, наши пользователи хотят точных совпадений, которые должен обеспечить поиск 'Точное совпадение'.

Мы думали об изменении поля на STRING вместо типа TEXT, но STRING плохо работает с поиском по фразе и логическим поиском.

Ответы [ 2 ]

2 голосов
/ 23 февраля 2014

Вы можете создать / продублировать это поле с другим типом данных.

, поэтому у вас будет

schema.xml

<field name="title" type="text"  indexed="true" stored="true"/> 
<field name="titleExactMatch" type="string"  indexed="true" stored="true"/> 

 <copyField source="title" dest="titleExactMatch"/>

а затем переписать «веса поиска», переопределяя qf.

solrconfig.xml

<requestHandler name="/select" class="solr.SearchHandler">
<!-- default values for query parameters can be specified, these
     will be overridden by parameters in the request
  -->
 <lst name="defaults">
   <str name="df">titleExactMatch</str>
   <str name="echoParams">explicit</str>
   <int name="rows">10</int>       
   <str name="defType">edismax</str>
   <str name="qf">titleExactMatch^2.2 title^0.4</str>
   <str name="sort">score desc, _version_ desc, title desc</str>
 </lst>

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

2 голосов
/ 21 сентября 2011

Вам нужно отключить stemming. Если вы посмотрите в свой файл Solr schema.xml, вы найдете определения полей и типов полей, которые управляют видом обработки, выполняемой для каждого поля. Скорее всего, вы просто взяли по умолчанию и не настроили это вообще? Я предлагаю вам потратить некоторое время, чтобы понять параметры в этом файле; они хорошо документированы в Solr Wiki . Но то, о чем вы спрашиваете, - это, скорее всего, эффект PorterStemFilter, так что вы можете просто закомментировать это и перезагрузить данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...