Példák a teljes Lucene keresési szintaxisra (speciális lekérdezések)

Megjegyzés

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

A Azure AI Keresés lekérdezések létrehozásakor lecserélheti az alapértelmezett simple lekérdezéselemzőt a hatékonyabb Lucene lekérdezéselemzőre speciális és speciális lekérdezési kifejezések megfogalmazásához.

A Lucene-elemző támogatja az összetett lekérdezési formátumokat, például a mezőalapú lekérdezéseket, a homályos keresést, az infixet és az utótagot helyettesítő karakterek keresését, a közelségi keresést, a kifejezéskiemelést és a reguláris kifejezéskeresést. Az extra teljesítmény több feldolgozási követelményeket is tartalmaz, ezért valamivel hosszabb végrehajtási időre kell számítania. Ebben a cikkben olyan példákat mutat be, amelyek teljes szintaxison alapuló lekérdezési műveleteket mutatnak be.

Megjegyzés

A teljes Lucene-lekérdezési szintaxis által lehetővé tett speciális lekérdezéskonstrukciók közül sok nem esik át szövegelemzésen, ami meglepő lehet, ha szótövezésre vagy lemmatizálásra számít. A lexikális elemzés csak teljes kifejezéseken (kifejezés- vagy kifejezéskeresésen) történik. A hiányos kifejezéseket tartalmazó lekérdezéstípusok (előtag lekérdezés, helyettesítő lekérdezés, regex lekérdezés, homályos lekérdezés) közvetlenül a lekérdezésfához lesznek hozzáadva, megkerülve az elemzési szakaszt. A részleges lekérdezési kifejezésekkel végrehajtott egyetlen átalakítás a kisbetűssé alakítás.

Hotelek mintaindexe

A következő lekérdezések a szállodai mintaindexen alapulnak, amelyet a Gyorsútmutató: teljes szöveges keresés az Azure portálon követve hozhat létre.

A példa-lekérdezések a REST API és a POST kérések használatával vannak tagoltan. Beillesztheti és futtathatja őket egy REST-ügyfélben. Vagy használja a Search Explorer JSON nézetét az Azure portálon. JSON nézetben beillesztheti a cikkben bemutatott lekérdezési példákat.

A kérelemfejléceknek a következő értékekkel kell rendelkezniük:

Kulcs Érték
Tartalom típusa alkalmazás/json
API kulcs <your-search-service-api-key>, lekérdezés vagy rendszergazdai kulcs

Az URI-paramétereknek tartalmazniuk kell a search service végpontot az index nevével, a dokumentumgyűjteményekkel, a keresési paranccsal és az API-verzióval, az alábbi példához hasonlóan:

https://{{service-name}}.search.windows.net/indexes/hotels-sample/docs/search?api-version=2026-04-01

A kérelem törzsét érvényes JSON-ként kell formázni:

{
    "search": "*",
    "queryType": "full",
    "select": "HotelId, HotelName, Category, Tags, Description",
    "count": true
}
  • search értéke * egy meghatározatlan lekérdezés, amely null értékű vagy üres keresésnek felel meg. Ez nem különösen hasznos, de ez a legegyszerűbben elvégezhető keresés, és az index összes beolvasható mezőjét megjeleníti az összes értékkel együtt.

  • queryType "teljes" értékre állítása meghívja a teljes Lucene-lekérdezéselemzőt, és ez szükséges ehhez a szintaxishoz.

  • select vesszővel tagolt mezőlistára van állítva a keresési eredmények összetétele, beleértve csak azokat a mezőket, amelyek hasznosak a keresési eredmények kontextusában.

  • count A keresési feltételeknek megfelelő dokumentumok számát adja vissza. Üres keresési karakterlánc esetén az indexben található összes dokumentum száma jelenik meg (50 a szállodák mintaindexében).

A mezőalapú keresés az egyéni, beágyazott keresési kifejezéseket egy adott mezőhöz rendeli. Ez a példa olyan szállodaneveket keres, amelyben a hotel kifejezés szerepel, de a motelt nem. Több mezőt is megadhat a AND használatával.

Ha ezt a lekérdezési szintaxist használja, kihagyhatja a searchFields paramétert, ha a lekérdezni kívánt mezők magukban a keresési kifejezésben találhatók. Ha mezőalapú kereséssel tartalmazza searchFields-t, az fieldName:searchExpression mindig elsőbbséget élvez searchFields-vel szemben.

POST /indexes/hotel-samples-index/docs/search?api-version=2026-04-01
{
    "search": "HotelName:(hotel NOT motel) AND Category:'Boutique'",
    "queryType": "full",
    "select": "HotelName, Category",
    "count": true
}

A lekérdezésre adott válasznak a következő példához hasonlóan kell kinéznie, amely a Butikra szűrve jelenik meg, és olyan szállodákat ad vissza, amelyekben szerepel a szálloda a névben, és kizárja azokat az eredményeket, amelyekben a motel szerepel a névben.

{
  "@odata.count": 5,
  "value": [
    {
      "@search.score": 2.2289815,
      "HotelName": "Stay-Kay City Hotel",
      "Category": "Boutique"
    },
    {
      "@search.score": 1.3862944,
      "HotelName": "City Skyline Antiquity Hotel",
      "Category": "Boutique"
    },
    {
      "@search.score": 1.355046,
      "HotelName": "Old Century Hotel",
      "Category": "Boutique"
    },
    {
      "@search.score": 1.355046,
      "HotelName": "Sublime Palace Hotel",
      "Category": "Boutique"
    },
    {
      "@search.score": 1.355046,
      "HotelName": "Red Tide Hotel",
      "Category": "Boutique"
    }
  ]
}

A keresési kifejezés lehet egyetlen kifejezés, egy kifejezéscsoport vagy egy összetettebb kifejezés zárójelben, opcionálisan logikai operátorokkal. Néhány példa a következőkre:

  • HotelName:(hotel NOT motel)
  • Address/StateProvince:("WA" OR "CA")
  • Tags:("free wifi" NOT "free parking") AND "coffee in lobby"

Ügyeljen arra, hogy idézőjelek közé tegyen egy kifejezést, ha mindkét sztringet egyetlen entitásként szeretné kiértékelni, mivel ebben az esetben két különböző helyet keres a Address/StateProvince mezőben. Az ügyféltől függően előfordulhat, hogy el kell menekülnie (\) az idézőjelek elől.

A megadott fieldName:searchExpression mezőnek kereshető mezőnek kell lennie. A meződefiníciók attribútumainak megismeréséhez tekintse meg az Index létrehozása (REST API) című témakört.

A homályos keresés hasonló kifejezéseket tartalmaz, beleértve a hibásan írt szavakat is. Végezzen egy homályos keresést azzal, hogy a tilde ~ szimbólumot illeszti egyetlen szó végére, opcionálisan megadva egy paramétert, ami egy 0 és 2 közötti érték, és meghatározza a szerkesztési távolságot. Például kéket, blue~blue~1 kéket és ragasztót ad vissza.

POST /indexes/hotel-samples-index/docs/search?api-version=2026-04-01
{
    "search": "Tags:conserge~",
    "queryType": "full",
    "select": "HotelName, Category, Tags",
    "searchFields": "HotelName, Category, Tags",
    "count": true
}

A lekérdezésre adott válasz a megfelelő dokumentumokban "concierge"-re oldódik fel, a rövidség kedvéért levágva.

{
  "@odata.count": 9,
  "value": [
    {
      "@search.score": 1.4947624,
      "HotelName": "Twin Vortex Hotel",
      "Category": "Luxury",
      "Tags": [
        "bar",
        "restaurant",
        "concierge"
      ]
    },
    {
      "@search.score": 1.1685618,
      "HotelName": "Stay-Kay City Hotel",
      "Category": "Boutique",
      "Tags": [
        "view",
        "air conditioning",
        "concierge"
      ]
    },
    {
      "@search.score": 1.1465473,
      "HotelName": "Old Century Hotel",
      "Category": "Boutique",
      "Tags": [
        "pool",
        "free wifi",
        "concierge"
      ]
    },
. . .
  ]
}

A kifejezések közvetlenül nem támogatottak, de megadhat egy körülbelüli egyezést egy többrészes kifejezés minden egyes részére, például search=Tags:landy~ AND sevic~. Ez a lekérdezési kifejezés 15 találatot talál a mosodai szolgáltatásban.

Megjegyzés

A rendszer nem elemzi a homályos lekérdezéseket. A hiányos kifejezéseket tartalmazó lekérdezéstípusok (előtag lekérdezés, helyettesítő lekérdezés, regex lekérdezés, homályos lekérdezés) közvetlenül a lekérdezésfához lesznek hozzáadva, megkerülve az elemzési szakaszt. A részleges lekérdezési feltételekkel végrehajtott egyetlen átalakítás az alacsonyabb casing.

A közelségi keresés megkeresi a dokumentumban egymáshoz közeli kifejezéseket. Szúrjon be egy tilde ~ szimbólumot egy kifejezés végére, amelyet a közelségi határt létrehozó szavak száma követ.

Ez a lekérdezés egy dokumentumban egymástól öt szó alatt megkeresi a szálloda és a repülőtér kifejezést. Az idézőjelek () a következő kifejezés megőrzése érdekében kerülnek ki\":

POST /indexes/hotel-samples-index/docs/search?api-version=2026-04-01
{
    "search": "Description: \"hotel airport\"~5",
    "queryType": "full",
    "select": "HotelName, Description",
    "searchFields": "HotelName, Description",
    "count": true
}

A lekérdezés válaszának a következő példához hasonlóan kell kinéznie:

{
  "@odata.count": 1,
  "value": [
    {
      "@search.score": 0.69167054,
      "HotelName": "Trails End Motel",
      "Description": "Only 8 miles from Downtown. On-site bar/restaurant, Free hot breakfast buffet, Free wireless internet, All non-smoking hotel. Only 15 miles from airport."
    }
  ]
}

4. példa: Kifejezésnövelés

A kifejezésnövelés azt jelenti, hogy egy dokumentumot magasabbra rangsorolt, ha a kiemelt kifejezést tartalmazza, a nem a kifejezést tartalmazó dokumentumokhoz képest. Egy kifejezés kiemeléséhez használja a caret , ^szimbólumot a keresett kifejezés végén egy kiemelési tényezővel (számmal). A boost factor default értéke 1, és bár pozitívnak kell lennie, 1-nél kisebb lehet (például 0,2). A kifejezésnövelés abban különbözik a pontozási profiloktól, hogy a pontozási profilok adott kifejezések helyett bizonyos mezőket emelnek ki.

Ebben a before lekérdezésben keresse meg a beach access és figyelje meg, hogy hat dokumentum egy vagy mindkét kifejezéssel egyezik.

POST /indexes/hotel-samples-index/docs/search?api-version=2026-04-01
{
    "search": "beach access",
    "queryType": "full",
    "select": "HotelName, Description, Tags",
    "searchFields": "HotelName, Description, Tags",
    "count": true
}

Valójában csak két dokumentum egyezik meg a hozzáférés alapján. Az első példány a második helyen áll, annak ellenére, hogy a dokumentumból hiányzik a strand kifejezés.

{
  "@odata.count": 6,
  "value": [
    {
      "@search.score": 1.068669,
      "HotelName": "Johnson's Family Resort",
      "Description": "Family oriented resort located in the heart of the northland. Operated since 1962 by the Smith family, we have grown into one of the largest family resorts in the state. The home of excellent Smallmouth Bass fishing with 10 small cabins, we're a home not only to fishermen but their families as well. Rebuilt in the early 2000's, all of our cabins have all the comforts of home. Sporting a huge **beach** with multiple water toys for those sunny summer days and a Lodge full of games for when you just can't swim anymore, there's always something for the family to do. A full marina offers watercraft rentals, boat launch, powered dock slips, canoes (free to use), & fish cleaning facility. Rent pontoons, 14' fishing boats, 16' fishing rigs or jet ski's for a fun day or week on the water. Pets are accepted in the lakeside cottages.",
      "Tags": [
        "24-hour front desk service",
        "pool",
        "coffee in lobby"
      ]
    },
    {
      "@search.score": 1.0162708,
      "HotelName": "Campus Commander Hotel",
      "Description": "Easy **access** to campus and steps away from the best shopping corridor in the city. From meetings in town or gameday, enjoy our prime location between the union and proximity to the university stadium.",
      "Tags": [
        "free parking",
        "coffee in lobby",
        "24-hour front desk service"
      ]
    },
    {
      "@search.score": 0.9050383,
      "HotelName": "Lakeside B & B",
      "Description": "Nature is Home on the **beach**. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the library by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.",
      "Tags": [
        "laundry service",
        "concierge",
        "free parking"
      ]
    },
    {
      "@search.score": 0.8955848,
      "HotelName": "Windy Ocean Motel",
      "Description": "Oceanfront hotel overlooking the **beach** features rooms with a private balcony and 2 indoor and outdoor pools. Inspired by the natural beauty of the island, each room includes an original painting of local scenes by the owner. Rooms include a mini fridge, Keurig coffee maker, and flatscreen TV. Various shops and art entertainment are on the boardwalk, just steps away.",
      "Tags": [
        "pool",
        "air conditioning",
        "bar"
      ]
    },
    {
      "@search.score": 0.83636594,
      "HotelName": "Happy Lake Resort & Restaurant",
      "Description": "The largest year-round resort in the area offering more of everything for your vacation - at the best value! What can you enjoy while at the resort, aside from the mile-long sandy **beaches** of the lake? Check out our activities sure to excite both young and young-at-heart guests. We have it all, including being named "Property of the Year" and a "Top Ten Resort" by top publications.",
      "Tags": [
        "pool",
        "bar",
        "restaurant"
      ]
    },
    {
      "@search.score": 0.7808502,
      "HotelName": "Swirling Currents Hotel",
      "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking **access** to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary W-Fi and flat-screen TVs. ",
      "Tags": [
        "air conditioning",
        "laundry service",
        "24-hour front desk service"
      ]
    }
  ]
}

Az utólagos lekérdezésben ismételje meg a keresést, ezúttal úgy növelve az eredményeket, hogy a beach kifejezést előnyben részesítjük a access kifejezéssel szemben. A lekérdezés emberi olvasható verziója search=Description:beach^2 access. Az ügyféltől függően előfordulhat, hogy ki kell fejeznie ^2 a következőképpen: %5E2.

POST /indexes/hotel-samples-index/docs/search?api-version=2026-04-01
{
    "search": "Description:beach^2 access",
    "queryType": "full",
    "select": "HotelName, Description, Tags",
    "searchFields": "HotelName, Description, Tags",
    "count": true
}

A strand kifejezés kiemelése után a Campus Commander Hotel meccse az ötödik helyre kerül.

{
  "@odata.count": 6,
  "value": [
    {
      "@search.score": 2.137338,
      "HotelName": "Johnson's Family Resort",
      "Description": "Family oriented resort located in the heart of the northland. Operated since 1962 by the Smith family, we have grown into one of the largest family resorts in the state. The home of excellent Smallmouth Bass fishing with 10 small cabins, we're a home not only to fishermen but their families as well. Rebuilt in the early 2000's, all of our cabins have all the comforts of home. Sporting a huge beach with multiple water toys for those sunny summer days and a Lodge full of games for when you just can't swim anymore, there's always something for the family to do. A full marina offers watercraft rentals, boat launch, powered dock slips, canoes (free to use), & fish cleaning facility. Rent pontoons, 14' fishing boats, 16' fishing rigs or jet ski's for a fun day or week on the water. Pets are accepted in the lakeside cottages.",
      "Tags": [
        "24-hour front desk service",
        "pool",
        "coffee in lobby"
      ]
    },
    {
      "@search.score": 1.8100766,
      "HotelName": "Lakeside B & B",
      "Description": "Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the library by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.",
      "Tags": [
        "laundry service",
        "concierge",
        "free parking"
      ]
    },
    {
      "@search.score": 1.7911696,
      "HotelName": "Windy Ocean Motel",
      "Description": "Oceanfront hotel overlooking the beach features rooms with a private balcony and 2 indoor and outdoor pools. Inspired by the natural beauty of the island, each room includes an original painting of local scenes by the owner. Rooms include a mini fridge, Keurig coffee maker, and flatscreen TV. Various shops and art entertainment are on the boardwalk, just steps away.",
      "Tags": [
        "pool",
        "air conditioning",
        "bar"
      ]
    },
    {
      "@search.score": 1.6727319,
      "HotelName": "Happy Lake Resort & Restaurant",
      "Description": "The largest year-round resort in the area offering more of everything for your vacation - at the best value! What can you enjoy while at the resort, aside from the mile-long sandy beaches of the lake? Check out our activities sure to excite both young and young-at-heart guests. We have it all, including being named "Property of the Year" and a "Top Ten Resort" by top publications.",
      "Tags": [
        "pool",
        "bar",
        "restaurant"
      ]
    },
    {
      "@search.score": 1.0162708,
      "HotelName": "Campus Commander Hotel",
      "Description": "Easy access to campus and steps away from the best shopping corridor in the city. From meetings in town or gameday, enjoy our prime location between the union and proximity to the university stadium.",
      "Tags": [
        "free parking",
        "coffee in lobby",
        "24-hour front desk service"
      ]
    },
    {
      "@search.score": 0.7808502,
      "HotelName": "Swirling Currents Hotel",
      "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary W-Fi and flat-screen TVs. ",
      "Tags": [
        "air conditioning",
        "laundry service",
        "24-hour front desk service"
      ]
    }
  ]
}

5. példa: Regex

A reguláris kifejezés-keresés egy egyezést talál a perjelek között és a kisbetűs stringek tartalma alapján, ahogyan az a RegExp osztályban dokumentálva van.

POST /indexes/hotel-samples-index/docs/search?api-version=2026-04-01
{
    "search": "HotelName:/(Mo|Ho)tel/",
    "queryType": "full",
    "select": "HotelName",
    "count": true
}

A lekérdezésre adott válasznak az alábbi példához hasonlóan kell kinéznie (a rövidség kedvéért levágva):

{
  "@odata.count": 25,
  "value": [
    {
      "@search.score": 1,
      "HotelName": "Country Residence Hotel"
    },
    {
      "@search.score": 1,
      "HotelName": "Downtown Mix Hotel"
    },
    {
      "@search.score": 1,
      "HotelName": "Gastronomic Landscape Hotel"
    },
    . . .
    {
      "@search.score": 1,
      "HotelName": "Trails End Motel"
    },
    {
      "@search.score": 1,
      "HotelName": "Nordick's Valley Motel"
    },
    {
      "@search.score": 1,
      "HotelName": "King's Cellar Hotel"
    }
  ]
}

Megjegyzés

A Regex-lekérdezések nem lesznek elemezve. A részleges lekérdezési feltételekkel végrehajtott egyetlen átalakítás az alacsonyabb casing.

Általánosan felismert szintaxist használhat több (*) vagy egy (?) karakteres helyettesítő karakter kereséséhez. A Lucene lekérdezéselemző támogatja ezeknek a szimbólumoknak a használatát egyetlen szóval, és nem kifejezéssel.

Ebben a lekérdezésben keresse meg az sc előtagot tartalmazó szállodaneveket. Nem használhatja a * vagy a ? szimbólumot keresés első karaktereként.

POST /indexes/hotel-samples-index/docs/search?api-version=2026-04-01
{
    "search": "HotelName:sc*",
    "queryType": "full",
    "select": "HotelName",
    "count": true
}

A lekérdezés válaszának a következő példához hasonlóan kell kinéznie:

{
  "@odata.count": 1,
  "value": [
    {
      "@search.score": 1,
      "HotelName": "Waterfront Scottish Inn"
    }
  ]
}

Megjegyzés

A helyettesítő lekérdezések nem lesznek elemezve. A részleges lekérdezési feltételekkel végrehajtott egyetlen átalakítás az alacsonyabb casing.