Solr Query с «в» и «не в» для одного и того же поля

Я совершенно новичок в Solr, и я пытаюсь создать запрос, который вернет все документы с одним или несколькими значениями в поле «ингредиент» (строка, разделенная табуляцией), но исключите те, которые имеют некоторые другие значения в то же поле. Мы используем Solr 4.9

Вот схема:

<fields>  
<field name="_version_" type="long" indexed="true" stored="true" multiValued="false"/>
<field name="uri" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
<field name="title"  type="text_general"    indexed="true"  stored="true" multiValued="false" />
<field name="text"  type="text_general"    indexed="true"  stored="true" multiValued="false" />
<field name="ingredient"  type="tab-delimited-string"    indexed="true"  stored="true" multiValued="false" />

Here a sample of a document:

  {
    "text": "Preheat oven to 350 degrees F.\n\nPlace potatoes, heavy cream, egg, salt, parmesan and marjoram in a blender container.\n\nCover and blend at high speed for about 30 seconds.\n\nFill dough in a greased baking dish and bake uncovered for 25-30 minutes at 350 F.\n\nPlace remaining ingredients (without the mozzarella) in a blender, cover and blend at high speed for about 10 seconds.\n\nSpread sauce on potato dough, cover with mozzarella and some sprinkles of oil and bake again uncovered for 20-25 minutes at 350 F.",
    "ingredient": "1/2 cup parmesan cheese, grind\t1 lb potato, uncooked,skin removed,diced\t1/2 cup heavy cream\t1 egg\t1 teaspoon salt\t1/2 teaspoon marjoram\t2 cloves garlic, chopped\t1 1/3 cups Tomatoes, diced\tsalt\tpepper\tbasil\t1 cup mozzarella cheese, finely grated\tolive oil",
    "uri": "http://www.food.com/recipe/potato-pizza-58181",
    "title": "Potato Pizza",
    "_version_": 1477518762807656400
  },

После поиска и чтения некоторых руководств я пришел к следующему:

title:pizza AND ingredient:"olive oil"  AND -ingredient:("beer" "potatoes")

но это не работает. Я также пробовал материал ниже, но он тоже не работает

title:pizza AND ingredient:"olive oil"  AND -ingredient:"beer " "potatoes"
title:pizza AND ingredient:"olive oil"  AND -ingredient:"beer" AND -ingredient:"potatoes"

Я получаю результаты, в которых в поле ингредиентов есть картофель или пиво. Любые идеи? Я что-то упустил?

Спасибо!.


person xburgos    schedule 22.09.2014    source источник
comment
Попробуйте: title:pizza AND ingredient:("olive oil" AND NOT (beer OR potatoes))   -  person arun    schedule 23.09.2014
comment
Только что попробовал, не работает, но спасибо за старания. Может ли это быть связано с каким-то типом кэширования, о котором я не знаю?   -  person xburgos    schedule 23.09.2014
comment
Что за поле ingredient? Можешь выложить свою схему?   -  person arun    schedule 23.09.2014
comment
Обновленный вопрос со схемой   -  person xburgos    schedule 23.09.2014
comment
Должен ли я сделать поле ингредиента многозначным?   -  person xburgos    schedule 23.09.2014
comment
Вы не опубликовали определение поля tab-delimited-string. Попробуйте изменить тип на text_general.   -  person arun    schedule 23.09.2014


Ответы (1)


Я понял это, мне просто нужно было добавить * к моим условиям поиска.

title:pizza AND ingredient:"olive oil"  AND -ingredient:(*beer* *potatoes*)
person xburgos    schedule 24.09.2014