2017-01-10 1 views
0

Я начал реализацию для Apache Lucene SOLR 6.3.0 для автоматической полной реализации.Как добиться точности, начать с и как результат в Apache Lucene SOLR 6.3.0

В том, что я создаю столбец схему, как:

<fields> 
<field name="id" type="int" indexed="true" stored="true" required="f" multiValued="false" /> 
<field name="specialityName" type="string" indexed="true" stored="true"/> 
<field name="isActive" type="int" indexed="false" stored="true"/> 
<field name="term" type="string" indexed="true" stored="true"/> 
<field name="tableName" type="string" indexed="true" stored="true"/>  
</fields> 

и хочу найти в сроке колонки.

Мое требование для автоматического полного результата похоже.

My data // Exact match. 
My data% // Start with. 
%My data% // Any where in string. 

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

Любая помощь будет полезна для меня.

ответ

0

Вы можете искать как указано ниже.

prefTerm:"My Data" || prefTerm:My\ \Data* || prefTerm:*My*pain*

"My Data" : Exact match 

My\ \Data*: Start with, here we need to escape all extra characters which can impact in jenkins search 

*My*pain*: contains search 
0

Для точного матча вы можете попробовать q=term:"My data"

Для начала вы можете попробовать q=term:My data*

Для частичного поиска или любой, где вы можете попробовать q=term:*Mydata*

попробовать с q=term:My*data*

+0

Я уже пробовал это, но когда я пытаюсь с д = термин: Мои данные * возвращает данные для «My» только не начать с «Мои данные», и именно поэтому я запутался. – bharatpatel

+0

Вы можете попробовать с q = термином: «Мои данные *» ... проверить измененный ответ –

0

You можно попробовать следующий тип поля, и при передаче пользовательского ввода в SOLR вы должны удалить пробелы из самого входа, и он будет повторно включить именно то, что вам нужно:

И изменить term поле быть:

<field name="term" type="input_general" indexed="true" stored="true"/> 

Применяя свой пример:

Для Exact Match Search; вы можете попробовать q=term:"Mydata"

Start With Search; вы можете попробовать q=term:Mydata*

Для the Contain Search; вы можете попробовать q=term:*data*

+0

Привет, я пробовал это, но он генерирует ошибку: java.lang.IllegalArgumentException: Неизвестные параметры: {replace = all}, и если я remove replace = "all", тогда он не работает должным образом. – bharatpatel

+0

Я изменяю charFilter для фильтрации и ошибки для replace = "all" разрешен, но результата все еще не ожидается, я что-то пропустил? – bharatpatel

+0

@bharatpatel это было для solr 3.6, он отлично работает даже после удаления replace = all, возможно, все изменилось –

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