2013-04-28 7 views
3

Есть два текстовых поля в solr, оба из них являются свободными пробелами и имеют фильтр нижних регистров. Ниже приведена схема:Запрос для документа, что два поля равны?

<fieldType name="text_ac" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

<field name="field1" type="text_ac" indexed="true" stored="true" required="false" omitNorms="true" default=""/> 

<field name="field2" type="text_ac" indexed="true" stored="true" required="false" omitNorms="true" default=""/> 

Как запросить Solr возвращать результаты, что вся строка field1 такой же, как field2 во время запроса (field1 == field2)?

Спасибо.

+0

вы можете предоставить нам пример? – Jayendra

+1

Случайно, вы пытаетесь выполнить [соединение в Solr] (http://wiki.apache.org/solr/Join)? – femtoRgon

+0

@Jayendra, я добавил схему. Благодарю. – Henry

ответ

9

Сравнение одного поля с другим в документе не поддерживается ни в ядре Solr, ни в Lucene, насколько мне известно.

Простым способом добиться этого было бы выполнить сравнение во время индекса и сохранить результат в индексе. То есть, если у вас есть field1 и field2, создайте поле 1_equals_2 и проиндексируйте его true, если они равны на основе вашего сравнения при добавлении документа. Затем вы можете просто найти 1_equals_2:true.

+0

спасибо, это, безусловно, вариант во время индекса. – Henry

1

Вы пробовали функцию «strdist» и запрос диапазона «frange»? Ряд запросов, как это помогло бы:

{! Frange л = 1 и = 1} strdist (field1, field2, редактировать)

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