ಫಿಲ್ಟರ್ ಹೊರತೆಗೆಯುವಿಕೆ: ರೆಜೆಕ್ಸ್ ಪದ ಗಡಿ ಹೊಂದಾಣಿಕೆ
ಈ ಲೇಖನವು ನೈಸರ್ಗಿಕ ಭಾಷಾ ಹುಡುಕಾಟ ಪ್ರಶ್ನೆಗಳಿಂದ ರಚನಾತ್ಮಕ ಉತ್ಪನ್ನ ಫಿಲ್ಟರ್ಗಳನ್ನು ಹೇಗೆ ಹೊರತೆಗೆಯುತ್ತೇವೆ ಎಂಬುದನ್ನು ವಿವರಿಸುತ್ತದೆ, ಪದ ಗಡಿ ರೆಜೆಕ್ಸ್ ಹೊಂದಾಣಿಕೆಯನ್ನು ವಾಕ್ಯಾಂಶ-ಟು-ಫಿಲ್ಟರ್ ಮ್ಯಾಪಿಂಗ್ಗಳ ವಿರುದ್ಧ ಬಳಸಿ.
ಸಮಸ್ಯೆ: ನೈಸರ್ಗಿಕ ಭಾಷೆಯಿಂದ ರಚನಾತ್ಮಕ ಫಿಲ್ಟರ್ಗಳಿಗೆ
ಬಳಕೆದಾರರು "16gb ram ಹೊಂದಿರುವ ಮಿನಿ pc" ಎಂದು ಹುಡುಕಿದಾಗ, ನಾವು ಹೊರತೆಗೆಯಬೇಕು:
{
"Form Factor": "Mini PC",
"Main Memory": "16"
}
ಈ ರಚನಾತ್ಮಕ ಫಿಲ್ಟರ್ಗಳು ಸಾಧ್ಯವಾಗಿಸುತ್ತವೆ:
-
ಉತ್ಪನ್ನ ಫಿಲ್ಟರಿಂಗ್: ಹೊಂದಾಣಿಕೆಯ ಉತ್ಪನ್ನಗಳನ್ನು ಮಾತ್ರ ತೋರಿಸಿ
-
ಫೆಸೆಟೆಡ್ ನ್ಯಾವಿಗೇಷನ್: ಲಭ್ಯವಿರುವ ಫಿಲ್ಟರ್ ಆಯ್ಕೆಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ
-
ಪ್ರಶ್ನೆ ಪುಟ ಉತ್ಪಾದನೆ: SEO-ಅನುಕೂಲಕರ ಪುಟಗಳನ್ನು ರಚಿಸಿ
-
ಸಂಬಂಧಿತ ಹುಡುಕಾಟಗಳು: ಇದೇ ರೀತಿಯ ಪ್ರಶ್ನೆಗಳನ್ನು ಹುಡುಕಿ
ಸವಾಲು ಎಂದರೆ ಬಳಕೆದಾರರು ಒಂದೇ ಉದ್ದೇಶವನ್ನು ವ್ಯಕ್ತಪಡಿಸುವ ಎಲ್ಲಾ ವಿಧಾನಗಳನ್ನು ನಿಭಾಯಿಸುವುದು.
ಅಲ್ಗಾರಿದಮ್: ಪದ ಗಡಿ ರೆಜೆಕ್ಸ್ ಹೊಂದಾಣಿಕೆ
ಹಂತ 1: ವಾಕ್ಯಾಂಶ ಮ್ಯಾಪಿಂಗ್ಗಳನ್ನು ಲೋಡ್ ಮಾಡಿ
ನಾವು SEO ಪೈಪ್ಲೈನ್ನಿಂದ ರಚಿಸಲಾದ ವಾಕ್ಯಾಂಶ-ಟು-ಫಿಲ್ಟರ್ ಮ್ಯಾಪಿಂಗ್ಗಳನ್ನು ಲೋಡ್ ಮಾಡುತ್ತೇವೆ. ಈ ಮ್ಯಾಪಿಂಗ್ಗಳು ವಾಕ್ಯಾಂಶಗಳನ್ನು ಫಿಲ್ಟರ್ ಮೌಲ್ಯಗಳಿಗೆ ಸಂಪರ್ಕಿಸುತ್ತವೆ, ವಾಕ್ಯಾಂಶದಿಂದ ಅನುಗುಣವಾದ ಫಿಲ್ಟರ್ ಕೀ ಮತ್ತು ಮೌಲ್ಯವನ್ನು ಹುಡುಕಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತವೆ.
ವೇಗವಾದ ಹುಡುಕಾಟಕ್ಕಾಗಿ ನಾವು ಈ ರಚನೆಯನ್ನು ತಲೆಕೆಳಗಾಗಿ ಮಾಡುತ್ತೇವೆ, ಆದ್ದರಿಂದ ನಾವು ಫಿಲ್ಟರ್ನಿಂದ ಬದಲಾಗಿ ವಾಕ್ಯಾಂಶದ ಮೂಲಕ ಹುಡುಕಬಹುದು:
phrase_to_filter = {
"16gb ram": ("Main Memory", "16"),
"16 gb ram": ("Main Memory", "16"),
"mini pc": ("Form Factor", "Mini PC"),
"mini computer": ("Form Factor", "Mini PC")
}
ಹಂತ 2: ಪ್ರಶ್ನೆಯನ್ನು ಸಾಮಾನ್ಯಗೊಳಿಸಿ
ಕೇಸ್-ಇನ್ಸೆನ್ಸಿಟಿವ್ ಹೊಂದಾಣಿಕೆಗಾಗಿ ಪ್ರಶ್ನೆಯನ್ನು ಸಣ್ಣಕ್ಷರಕ್ಕೆ ಪರಿವರ್ತಿಸಿ.
ಹಂತ 3: ಪದ ಗಡಿಗಳೊಂದಿಗೆ ವಾಕ್ಯಾಂಶಗಳನ್ನು ಹೊಂದಿಸಿ
ಮ್ಯಾಪಿಂಗ್ಗಳಲ್ಲಿನ ಪ್ರತಿ ವಾಕ್ಯಾಂಶಕ್ಕೂ, ನಿಯಮಿತ ಅಭಿವ್ಯಕ್ತಿಗಳಲ್ಲಿ ಪದ ಗಡಿ ಆಂಕರ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಅದು ಪ್ರಶ್ನೆಯಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆಯೇ ಎಂದು ನಾವು ಪರಿಶೀಲಿಸುತ್ತೇವೆ.
\b ಆಂಕರ್ಗಳು ನಾವು ಉಪಪದಗಳನ್ನು ಅಲ್ಲ, ಸಂಪೂರ್ಣ ಪದಗಳನ್ನು ಹೊಂದಿಸುತ್ತೇವೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತವೆ: "mini pc" "ram ಹೊಂದಿರುವ mini pc" ಗೆ ಹೊಂದುತ್ತದೆ ಆದರೆ "minipc" (ಜಾಗವಿಲ್ಲ) ಗೆ ಹೊಂದುವುದಿಲ್ಲ, ಮತ್ತು "16gb" "16gb ram" ಗೆ ಹೊಂದುತ್ತದೆ ಆದರೆ "216gb" (ಭಾಗಶಃ ಹೊಂದಾಣಿಕೆ) ಗೆ ಹೊಂದುವುದಿಲ್ಲ.
ಹಂತ 4: ಎಲ್ಲಾ ಹೊಂದಾಣಿಕೆಗಳನ್ನು ಸಂಗ್ರಹಿಸಿ
ನಾವು ಎಲ್ಲಾ ವಾಕ್ಯಾಂಶಗಳ ಮೂಲಕ ಪುನರಾವರ್ತಿಸುತ್ತೇವೆ ಮತ್ತು ಹೊಂದಾಣಿಕೆಯ ಫಿಲ್ಟರ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತೇವೆ. "mini pc with 16gb ram" ಗಾಗಿ, ಇದು {"Form Factor": "Mini PC", "Main Memory": "16"} ನಂತಹ ಫಿಲ್ಟರ್ಗಳನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ.
ಏಕೆ ಪದ ಗಡಿಗಳು?
ಪದ ಗಡಿಗಳು ತಪ್ಪು ಹೊಂದಾಣಿಕೆಗಳನ್ನು ತಡೆಯುತ್ತವೆ:
ಪದ ಗಡಿಗಳಿಲ್ಲದೆ:
-
"i5" "i5000" ಗೆ ಹೊಂದುತ್ತದೆ (ತಪ್ಪು)
-
"ram" "program" ಗೆ ಹೊಂದುತ್ತದೆ (ತಪ್ಪು)
-
"pc" "pcie" ಗೆ ಹೊಂದುತ್ತದೆ (ತಪ್ಪು)
ಪದ ಗಡಿಗಳೊಂದಿಗೆ: "i5" "i5 processor" ✅ ಗೆ ಹೊಂದುತ್ತದೆ ಆದರೆ "i5000" ❌ ಗೆ ಹೊಂದುವುದಿಲ್ಲ; "ram" "16gb ram" ✅ ಗೆ ಹೊಂದುತ್ತದೆ ಆದರೆ "program" ❌ ಗೆ ಹೊಂದುವುದಿಲ್ಲ. \b ಆಂಕರ್ ನಾವು ಪದದ ಅಂಚುಗಳಲ್ಲಿ ಮಾತ್ರ ಹೊಂದಿಸುತ್ತೇವೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
ಬಹು ಹೊಂದಾಣಿಕೆಗಳ ನಿರ್ವಹಣೆ
ಒಂದೇ ಫಿಲ್ಟರ್ಗೆ ಬಹು ವಾಕ್ಯಾಂಶಗಳು ಹೊಂದಿಕೆಯಾದರೆ, ಕೊನೆಯ ಹೊಂದಾಣಿಕೆ ಗೆಲ್ಲುತ್ತದೆ:
# ಪ್ರಶ್ನೆ: "mini pc small computer"
# "mini pc" ಮತ್ತು "small computer" ಎರಡೂ "Form Factor:Mini PC" ಗೆ ಮ್ಯಾಪ್ ಆಗುತ್ತವೆ
# ಫಲಿತಾಂಶ: {"Form Factor": "Mini PC"} (ನಕಲು ತೆಗೆದುಹಾಕಲಾಗಿದೆ)
ಒಂದೇ ಫಿಲ್ಟರ್ಗೆ ವಿಭಿನ್ನ ಮೌಲ್ಯಗಳಿಗೆ ಬಹು ವಾಕ್ಯಾಂಶಗಳು ಹೊಂದಿಕೆಯಾದರೆ, ಕೊನೆಯ ಹೊಂದಾಣಿಕೆ ಗೆಲ್ಲುತ್ತದೆ:
# ಪ್ರಶ್ನೆ: "8gb 16gb ram"
# "8gb" → Main Memory:8
# "16gb" → Main Memory:16
# ಫಲಿತಾಂಶ: {"Main Memory": "16"} (ಕೊನೆಯ ಹೊಂದಾಣಿಕೆ ಗೆಲ್ಲುತ್ತದೆ)
ಪ್ರಾಯೋಗಿಕವಾಗಿ, ಬಳಕೆದಾರರು ವಿರೋಧಾತ್ಮಕ ಮೌಲ್ಯಗಳನ್ನು ವಿರಳವಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತಾರೆ, ಆದ್ದರಿಂದ ಇದು ಸಮಸ್ಯೆಯಲ್ಲ.
ವಾಕ್ಯಾಂಶ ಆದ್ಯತೆ
ವಾಕ್ಯಾಂಶಗಳನ್ನು ಅವು ಮ್ಯಾಪಿಂಗ್ಗಳಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುವ ಕ್ರಮದಲ್ಲಿ ಹೊಂದಿಸಲಾಗುತ್ತದೆ. ಮ್ಯಾಪಿಂಗ್ಗಳನ್ನು ಹೋಲಿಕೆಯಿಂದ (ಅತ್ಯಧಿಕ ಮೊದಲು) ಮತ್ತು ನಂತರ ಉದ್ದದಿಂದ (ಚಿಕ್ಕದು ಮೊದಲು) ವಿಂಗಡಿಸಲಾಗಿರುವುದರಿಂದ, ಹೆಚ್ಚಿನ ಗುಣಮಟ್ಟದ ಹೊಂದಾಣಿಕೆಗಳನ್ನು ಮೊದಲು ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ. ಆದಾಗ್ಯೂ, ನಾವು ಎಲ್ಲಾ ವಾಕ್ಯಾಂಶಗಳ ಮೂಲಕ ಪುನರಾವರ್ತಿಸುವುದರಿಂದ, ಕ್ರಮವು ಅಂತಿಮ ಫಲಿತಾಂಶವನ್ನು ಪರಿಣಾಮ ಬೀರುವುದಿಲ್ಲ—ಕೊನೆಯ ಹೊಂದಾಣಿಕೆ ಗೆಲ್ಲುತ್ತದೆ.
ಕಾರ್ಯಕ್ಷಮತೆ ಆಪ್ಟಿಮೈಸೇಶನ್
ಕ್ಯಾಶಿಂಗ್
ವಾಕ್ಯಾಂಶ-ಟು-ಫಿಲ್ಟರ್ ಮ್ಯಾಪಿಂಗ್ ಅನ್ನು ಪ್ರಾರಂಭದಲ್ಲಿ ಒಮ್ಮೆ ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ಮೆಮೊರಿಯಲ್ಲಿ ಕ್ಯಾಶ್ ಮಾಡಲಾಗುತ್ತದೆ, ಪ್ರತಿ ವಿನಂತಿಯ ಮೇಲೆ ಪುನರಾವರ್ತಿತ ಡಿಸ್ಕ್ I/O ಅನ್ನು ತಪ್ಪಿಸುತ್ತದೆ.
ವಾಲ್ಕಿ ಫಾಲ್ಬ್ಯಾಕ್
ನಾವು ಮ್ಯಾಪಿಂಗ್ಗಳನ್ನು ಮೊದಲು ವಾಲ್ಕಿಯಿಂದ (ರೆಡಿಸ್ ಫೋರ್ಕ್) ಲೋಡ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತೇವೆ, JSON ಫೈಲ್ಗಳಿಗೆ ಫಾಲ್ಬ್ಯಾಕ್ ಆಗಿ:
- ವೇಗವಾದ ಇನ್-ಮೆಮೊರಿ ಹುಡುಕಾಟಕ್ಕಾಗಿ ವಾಲ್ಕಿಯನ್ನು ಪರಿಶೀಲಿಸಿ
- ವಾಲ್ಕಿ ಮಿಸ್ ಆದರೆ JSON ನಿಂದ ಲೋಡ್ ಮಾಡಿ
- ಕ್ಯಾಶ್ ಮುಕ್ತಾಯದೊಂದಿಗೆ ವಾಲ್ಕಿಯಲ್ಲಿ ಸಂಗ್ರಹಿಸಿ
ಇದು ನಂತರದ ವಿನಂತಿಗಳಿಗೆ ವಿಳಂಬತೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
ರೆಜೆಕ್ಸ್ ಹೊಂದಾಣಿಕೆ
ಪ್ಯಾಟರ್ನ್ಗಳು re.search() ಅನ್ನು ಪದ ಗಡಿ ಆಂಕರ್ಗಳೊಂದಿಗೆ ಬಳಸುತ್ತವೆ, ತಪ್ಪು ಭಾಗಶಃ ಹೊಂದಾಣಿಕೆಗಳಿಲ್ಲದೆ ಸಂಪೂರ್ಣ ಪದಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಹೊಂದಿಸಲು.
ಹುಡುಕಾಟ ಸೇವೆಯೊಂದಿಗೆ ಸಂಯೋಜನೆ
ಫಿಲ್ಟರ್ ಹೊರತೆಗೆಯುವಿಕೆಯನ್ನು API ಸೇವಾ ಎಂಡ್ಪಾಯಿಂಟ್ ಆಗಿ ಅನುಷ್ಠಾನಗೊಳಿಸಲಾಗಿದೆ, ಇದು ಹುಡುಕಾಟ ಪ್ರಶ್ನೆಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಹೊರತೆಗೆದ ಫಿಲ್ಟರ್ಗಳನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ.
ಸೇವೆಯು:
- ಇನ್ಪುಟ್ ಆಗಿ ಹುಡುಕಾಟ ಪ್ರಶ್ನೆಯನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ
- ವಾಕ್ಯಾಂಶ-ಟು-ಫಿಲ್ಟರ್ ಮ್ಯಾಪಿಂಗ್ಗಳನ್ನು ಮೆಮೊರಿಗೆ ಲೋಡ್ ಮಾಡುತ್ತದೆ
- ಪದ ಗಡಿಗಳೊಂದಿಗೆ ವಾಕ್ಯಾಂಶಗಳನ್ನು ಸಾಮಾನ್ಯಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಹೊಂದಿಸುತ್ತದೆ
- ರಚನಾತ್ಮಕ ಫಿಲ್ಟರ್ ಕೀ-ಮೌಲ್ಯ ಜೋಡಿಗಳನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ
ಮುಖ್ಯ ವೆಬ್ ಸರ್ವರ್ ಬಳಕೆದಾರರ ಪ್ರಶ್ನೆಗಳಿಂದ ಫಿಲ್ಟರ್ಗಳನ್ನು ಹೊರತೆಗೆಯಲು ಈ ಸೇವೆಯನ್ನು ಕರೆಯುತ್ತದೆ:
filters = extract_filters_from_query("mini pc 16gb ram")
# ಹಿಂದಿರುಗಿಸುತ್ತದೆ: {"Form Factor": "Mini PC", "Main Memory": "16"}
ಚಿಂತನೆಯ ಈ ಪ್ರತ್ಯೇಕತೆಯು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ:
-
ಸ್ವತಂತ್ರ ಸ್ಕೇಲಿಂಗ್: ಫಿಲ್ಟರ್ ಹೊರತೆಗೆಯುವಿಕೆಯು ಪ್ರತ್ಯೇಕ ಸರ್ವರ್ನಲ್ಲಿ ಚಲಿಸಬಹುದು
-
ಕ್ಯಾಶಿಂಗ್ ಪ್ರತ್ಯೇಕತೆ: ಸೇವೆಯು ತನ್ನದೇ ಆದ ಮ್ಯಾಪಿಂಗ್ ಕ್ಯಾಶ್ ಅನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ
-
ಸೇವೆ ಮರುಪ್ರಾರಂಭ: ಸೇವೆಯನ್ನು ಮುಖ್ಯ ವೆಬ್ ಸರ್ವರ್ ಅನ್ನು ಪರಿಣಾಮ ಬೀರದೆ ಸ್ವತಂತ್ರವಾಗಿ ಮರುಪ್ರಾರಂಭಿಸಬಹುದು
ವಿವರಗಳಿಗಾಗಿ ಹುಡುಕಾಟ ಸೇವಾ ಆರ್ಕಿಟೆಕ್ಚರ್ ನೋಡಿ.
ಪ್ರಶ್ನೆ ಲಾಗಿಂಗ್
ಪ್ರತಿ ಫಿಲ್ಟರ್ ಹೊರತೆಗೆಯುವಿಕೆಯನ್ನು SEO ಪೈಪ್ಲೈನ್ ಬಳಕೆಗಾಗಿ ಲಾಗ್ ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಲಾಗ್ಗಳು ಹೊಸ ಪ್ರಶ್ನೆ ಮಾದರಿಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಮತ್ತು ಕಾಲಾನಂತರದಲ್ಲಿ ವಾಕ್ಯಾಂಶ ಮ್ಯಾಪಿಂಗ್ಗಳನ್ನು ಸುಧಾರಿಸಲು SEO ಪೈಪ್ಲೈನ್ಗೆ ಹಿಂತಿರುಗಿ ಫೀಡ್ ಆಗುತ್ತವೆ.
ಬಳಕೆಯ ಪ್ರಕರಣಗಳು
ಪ್ರಶ್ನೆ ಪುಟಗಳು (/q/)
ಪ್ರಶ್ನೆ ಪುಟಗಳು ಯಾವ ಉತ್ಪನ್ನಗಳನ್ನು ಪ್ರದರ್ಶಿಸಬೇಕು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು URL ಸ್ಲಗ್ನಿಂದ ಫಿಲ್ಟರ್ಗಳನ್ನು ಹೊರತೆಗೆಯುತ್ತವೆ.
ಹುಡುಕಾಟ API (/api/search)
ಹುಡುಕಾಟ API ಹುಡುಕಾಟ ಪ್ರಶ್ನೆಯಿಂದ ಫಿಲ್ಟರ್ಗಳನ್ನು ಹೊರತೆಗೆದು ಹೊಂದಾಣಿಕೆಯ ಉತ್ಪನ್ನಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ಮತ್ತು ಹಿಂದಿರುಗಿಸಲು.
ಆಟೋಕಂಪ್ಲೀಟ್
ಆಟೋಕಂಪ್ಲೀಟ್ ಸಲಹೆಗಳು ಹುಡು