Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL felügyelt példány
A közelségi kifejezésNEAR használható a CONTAINS predikátumban vagy a CONTAINSTABLE függvényben, hogy szavakat vagy kifejezéseket keressen, amelyek közel vannak egymáshoz.
A NEAR áttekintése
NEAR a következő funkciókkal rendelkezik:
Megadhatja az első és az utolsó keresési kifejezéseket elválasztó nem keresési kifejezések maximális számát.
Bármilyen sorrendben kereshet szavakat vagy kifejezéseket, vagy adott sorrendben kereshet szavakat és kifejezéseket.
Megadhatja a nem keresési kifejezések maximális számát, vagy a maximális távolság, amely elválasztja az első és az utolsó keresési kifejezést, hogy egyezés jöhessen létre.
Ha megadja a kifejezések maximális számát, megadhatja azt is, hogy az egyezésnek tartalmaznia kell a keresési kifejezéseket a megadott sorrendben.
Az egyezésnek való minősítéshez a szöveg sztringjének a következőnek kell lennie:
Kezdje a megadott keresési kifejezések egyikével, és a másik megadott keresési kifejezés egyikével végződik.
Tartalmazza az összes megadott keresési kifejezést.
Ha a maximális távolság meg van adva, az első és az utolsó keresési kifejezés között előforduló nem keresési kifejezések ( beleértve a stopwordst is) száma nem lehet kisebb vagy egyenlő a maximális távolságnál.
A NEAR szintaxisa
A NEAR alapszintaxisa a következő:
NEAR (
{
*search_term* [ ,...*n* ]
|
(*search_term* [ ,...*n* ] ) [, <maximum_distance> [, <match_order> ] ]
}
)
A szintaxissal kapcsolatos további információkért lásd: CONTAINS (Transact-SQL).
Példák
1. példa
A "John" kifejezésre például a "Smith" két kifejezésén belül kereshet, az alábbiak szerint:
... CONTAINS(column_name, 'NEAR((John, Smith), 2)')
Néhány példa a sztringekre, amelyek egyeznek: "John Jacob Smith" és "Smith, John". A "John Jones knows Fred Smith" sztring három keresést nem érintő kifejezést tartalmaz, ezért nem egyezik.
Ha azt szeretné, hogy a feltételek a megadott sorrendben legyenek megadva, módosítsa a példa közelségi kifejezést NEAR((John, Smith),2, TRUE). Ez a "John" kifejezésre keres a "Smith" két kifejezésén belül, de csak akkor, ha a "John" előzi meg a "Smith" kifejezést. Balról jobbra író nyelvekben, mint például az angol, egy karakterláncra példa a "John Jacob Smith".
Vegye figyelembe, hogy a jobbról balra író nyelveknél, például az arab vagy a héber nyelvnél a Full-Text motor fordított sorrendben alkalmazza a megadott kifejezéseket. Az SQL Server Management Studióban az Object Explorer automatikusan megfordítja a jobbról balra író nyelvekben megadott szavak megjelenítési sorrendjét.
2. példa
Az alábbi példa a Production.Document mintaadatbázis AdventureWorks táblájában keres minden olyan dokumentum-összefoglalót, amely ugyanabban a dokumentumban tartalmazza a "reflektor" szót, mint a "zárójel" szót.
SELECT DocumentNode, Title, DocumentSummary
FROM Production.Document AS DocTable
INNER JOIN CONTAINSTABLE(Production.Document, Document,
'NEAR(bracket, reflector)' ) AS KEY_TBL
ON DocTable.DocumentNode = KEY_TBL.[KEY]
WHERE KEY_TBL.RANK > 50
ORDER BY KEY_TBL.RANK DESC;
GO
A maximális távolság mérése
Egy adott maximális távolság (például 10 vagy 25) határozza meg, hogy egy adott sztring első és utolsó keresési kifejezései között hány nem keresési kifejezés ( beleértve a stopwordst is) fordulhat elő. A NEAR((dogs, cats, "hunting mice"), 3) például a következő sort adja vissza, amelyben a nem keresési kifejezések teljes száma három ("enjoy", "but" és "avoid"):
"Catshunting mice``, but avoidenjoydogs``."
Ugyanez a közelségi kifejezés nem a következő sort adja vissza, mert a maximális távolságot a négy nem keresési kifejezés ("enjoy", "but", "usually" és "avoid" ) túllépi:
"Catshunting mice``, but usually avoidenjoydogs``."
A NEAR kombinálása más kifejezésekkel
Kombinálhatja a NEAR-t más kifejezésekkel. Az AND (&), OR (|) vagy a NOT (&!) használatával kombinálhat egy egyéni közelségi kifejezést egy másik egyéni közelségi kifejezéssel, egy egyszerű kifejezéssel vagy egy előtaggal. Például:
CONTAINS('NEAR((term1; term2),5) AND term3')
CONTAINS('NEAR((term1; term2),5) OR term3')
CONTAINS('NEAR((term1, term2),5) ÉS NEM term3')
CONTAINS('NEAR((term1; term2),5) AND NEAR(term3, term4),2)')
CONTAINS('NEAR((term1, term2),5) VAGY NEAR((kifejezés3, kifejezés4),2, IGAZ)')
Például
CONTAINS(column_name, 'NEAR((term1, term2), 5, TRUE) AND term3')
A NEAR nem kombinálható generációs kifejezéssel (ISABOUT ...) vagy súlyozott kifejezéssel (FORMSOF ...).
További információ a közelségi keresésekről
A keresési kifejezések egymást átfedő előfordulásai
A közelségi keresések mindig csak nem egymást átfedő előfordulásokat keresnek. A keresési kifejezések egymást átfedő előfordulásai soha nem minősülnek egyezésnek. Vegyük például a következő közelségi kifejezést, amely a "
A" és a "AA" kifejezésre keres ebben a sorrendben két kifejezés maximális távolságával:CONTAINS(column_name, 'NEAR((A,AA), 2, TRUE)')A lehetséges találatok a következők: "
AAA", "A.AA", és "A..AA". A csak "AA" értéket tartalmazó sorok nem egyeznek.Jegyzet
Megadhat olyan kifejezéseket, amelyek átfedésben vannak, például
NEAR("mountain bike", "bike trails")vagy(NEAR(comfort*, comfortable), 5). Az átfedésben lévő kifejezések megadása növeli a lekérdezés összetettségét a lehetséges egyezés-permutációk növelésével. Ha sok ilyen átfedésben lévő kifejezést ad meg, a lekérdezés elfogyhat az erőforrásokból, és meghiúsulhat. Ha ez történik, egyszerűsítse le a lekérdezést, és próbálkozzon újra.A NEAR (függetlenül attól, hogy a maximális távolság meg van-e adva) a kifejezések közötti logikai távolságot jelöli a közöttük lévő abszolút távolság helyett. Például egy bekezdés különböző kifejezéseiben vagy mondataiban lévő kifejezéseket a rendszer az azonos kifejezésben vagy mondatban szereplő kifejezésektől távolabbiként kezeli, függetlenül azok tényleges közelségétől, azzal a feltételezéssel, hogy kevésbé kapcsolódnak egymáshoz. Hasonlóképpen, a különböző bekezdésekben szereplő kifejezések még távolabb vannak egymástól. Ha egy egyezés egy mondat, bekezdés vagy fejezet végét fedi le, a dokumentum rangsorolásához használt rés 8, 128 vagy 1024-gyel nő.
A közelségi kifejezések hatása a CONTAINSTABLE függvény szerinti rangsorolásra
Ha a NEAR függvényt használja a CONTAINSTABLE függvény, a dokumentumokban a találatok száma a hosszához képest, valamint az egyes találatok első és utolsó keresési kifejezésének távolsága befolyásolja az egyes dokumentumok rangsorolását. Ha egy általános közelségi kifejezésről van szó, és a megfeleltethető keresési kifejezések >50 logikai kifejezéssel vannak egymástól, akkor a dokumentumban visszaadott rang 0. Olyan egyéni közelségi kifejezés esetén, amely nem határoz meg egész számot a maximális távolságként, egy olyan dokumentum, amely csak olyan találatokat tartalmaz, amelyek közötti hézag >100 logikai kifejezés, 0-s rangsorolást kap. A további információk az egyéni közelségi keresések rangsorolásáról a következő helyen találhatók: Keresési eredmények korlátozása a RANK.
A hangszavak átalakítása kiszolgálói beállítás
A transzformációs zajszavak értéke befolyásolja, hogyan kezeli az SQL Server a stopwordokat, ha azok a közelségi keresésekben vannak megadva. További információért lásd: zajszóátalakító szerver beállítási opció.