2015-01-06 2 views
1

Есть два поля в моей схеме:.
field1 в использовании keyword Tokenizer фильтра, который сохраняет маркера, как это (даже не разделяя на пространстве я проверил что на вкладке анализа.)
field2 использует WhitespaceTokenizerFactory, который разбивает слова на пробелы и вкладки и т.д.edismax с несколькими словами для ключевого слова Tokenizer расщепления на пространстве

<field name="field1" type="field1_type" indexed="true" stored="false"/>
<field name="field2" type="field2_type" indexed="true" stored="false"/>
<fieldType name="field2_type" class="solr.TextField"> <analyzer type="index"> <tokenizer class="solr.KeywordTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory" /> </analyzer> <analyzer type="query"> <tokenizer class="solr.KeywordTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory" /> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> </analyzer> </fieldType>

Я использую edismax парсер со значением по умолчанию qf = field1field2
Теперь, когда я запрашивая с q=hello world
В режиме deugging его, показывая, что его создание запроса как

rawquerystring: привет мир

QueryString: привет мир parsedquery: (+ ((DisjunctionMaxQuery ((field1: привет | field2: привет)) DisjunctionMaxQuery ((field1: мир | field2: мир))) ~ 1) ())/no_coord

parsedquery_toString: + (((field1: привет | field2: привет) (field1: мир | field2: мир)) ~ 1)()


Что я ожидал что-то вроде этого:

ожидается: + (((field1: привет мир) ((field2: hello) (field2: world)) ~ 1)()


т.е. для field1 он не должен нарушать запрос на пространстве, как он использует токенизатор ключевого слова в то время как он должен разбить запрос на пространстве для field2. Можете ли вы рассказать, что я делаю неправильно?

ответ

2

Вам нужно избежать пробела в запросе (используя обратную косую черту или кавычки вокруг термина) - анализатор запросов не анализируется на основе анализатора/токенизатора для каждого поля.

+0

спасибо, что решил проблему :) –

+0

@SankalpGupta Пожалуйста, примите ответ, если он решит ваш вопрос. – MatsLindh