सर्च कॉन्फ़िगरेशन

Android सिस्टम की सहायता से खोज को लागू करना—यानी, खोज डिलीवर करना किसी गतिविधि की क्वेरी करने और खोज से जुड़े सुझाव देने के लिए—आपके ऐप्लिकेशन को खोज से जुड़े सुझाव देने होंगे एक्सएमएल फ़ाइल के रूप में कॉन्फ़िगरेशन.

यह पेज, सर्च कॉन्फ़िगरेशन फ़ाइल के सिंटैक्स और इस्तेमाल के बारे में बताता है. ज़्यादा के लिए अपने ऐप्लिकेशन के लिए खोज सुविधाओं को लागू करने के तरीके के बारे में जानकारी, देखें कोई सर्च इंटरफ़ेस बनाएं.

फ़ाइल की जगह:
res/xml/filename.xml
Android, रिसॉर्स आईडी के तौर पर इस फ़ाइल नाम का इस्तेमाल करता है.
सिंटैक्स:
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="string resource"
    android:hint="string resource"
    android:searchMode=["queryRewriteFromData" | "queryRewriteFromText"]
    android:searchButtonText="string resource"
    android:inputType="inputType"
    android:imeOptions="imeOptions"
    android:searchSuggestAuthority="string"
    android:searchSuggestPath="string"
    android:searchSuggestSelection="string"
    android:searchSuggestIntentAction="string"
    android:searchSuggestIntentData="string"
    android:searchSuggestThreshold="int"
    android:includeInGlobalSearch=["true" | "false"]
    android:searchSettingsDescription="string resource"
    android:queryAfterZeroResults=["true" | "false"]
    android:voiceSearchMode=["showVoiceSearchButton" | "launchWebSearch" | "launchRecognizer"]
    android:voiceLanguageModel=["free-form" | "web_search"]
    android:voicePromptText="string resource"
    android:voiceLanguage="string"
    android:voiceMaxResults="int"
    >
    <actionkey
        android:keycode="KEYCODE"
        android:queryActionMsg="string"
        android:suggestActionMsg="string"
        android:suggestActionMsgColumn="string" />
</searchable>
एलिमेंट:
<searchable>
असिस्टेड खोज देने के लिए, Android सिस्टम खोज के लिए इस्तेमाल होने वाले सभी कॉन्फ़िगरेशन के बारे में बताता है.

एट्रिब्यूट:

android:label
स्ट्रिंग रिसॉर्स. (ज़रूरी है.) आपके ऐप्लिकेशन का नाम. यह इसके जैसा ही होना चाहिए आपकेandroid:label <activity> या <application> मेनिफ़ेस्ट एलिमेंट. यह लेबल उपयोगकर्ता को सिर्फ़ तब दिखता है, जब इसे सेट किया जाता है android:includeInGlobalSearch से "true" तक. इस लेबल का इस्तेमाल किया जाता है का उपयोग करें.
android:hint
स्ट्रिंग रिसॉर्स. (सुझाया गया.) खोज टेक्स्ट फ़ील्ड में तब दिखाया जाने वाला टेक्स्ट कोई टेक्स्ट नहीं डाला गया. इससे उपयोगकर्ता को पता चलता है कि कौनसा कॉन्टेंट खोजा जा सकता है. एक जैसा अनुभव देने के लिए दूसरे Android ऐप्लिकेशन के साथ, android:hint के लिए स्ट्रिंग को "खोज" के तौर पर फ़ॉर्मैट करें <content-or-product>" शामिल होना चाहिए. उदाहरण के लिए, "गाने और कलाकार खोजें" या "YouTube पर खोजें".
android:searchMode
कीवर्ड. ऐसे अतिरिक्त मोड सेट करता है जो खोज प्रज़ेंटेशन को कंट्रोल करते हैं. उपलब्ध है मोड यह तय करते हैं कि कस्टम सुझाव मिलने पर क्वेरी टेक्स्ट को कैसे फिर से लिखा जाना चाहिए फ़ोकस. मोड के ये मान स्वीकार किए जाते हैं:
वैल्यूब्यौरा
"queryRewriteFromData" इस कॉलम से मान का इस्तेमाल करें SUGGEST_COLUMN_INTENT_DATA अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है क्वेरी के टेक्स्ट को फिर से लिखने के लिए, इस कॉलम का इस्तेमाल किया जा सकता है. इसका इस्तेमाल सिर्फ़ तब किया जाना चाहिए, जब SUGGEST_COLUMN_INTENT_DATA, उपयोगकर्ताओं की जांच और बदलाव करने के लिए सही हैं, जैसे कि एचटीटीपी यूआरआई.
"queryRewriteFromText" इस कॉलम से मान का इस्तेमाल करें SUGGEST_COLUMN_TEXT_1 अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है कॉलम का इस्तेमाल करें.

ज़्यादा जानकारी के लिए, क्वेरी के टेक्स्ट को फिर से लिखने के बारे में जानकारी देने वाला दस्तावेज़ देखें. पसंद के मुताबिक खोज सुझाव जोड़ें.

android:searchButtonText
स्ट्रिंग रिसॉर्स. खोज करने वाले बटन में दिखने वाला टेक्स्ट. इन्होंने बदलाव किया है डिफ़ॉल्ट, यह बटन एक खोज आइकॉन (आवर्धक ग्लास) दिखाता है जो अंतरराष्ट्रीय मानकों के मुताबिक बनाया गया. इसलिए, बटन को बदलने के लिए इस एट्रिब्यूट का इस्तेमाल तब तक न करें, जब तक कि खोज के अलावा कुछ और होता है, जैसे कि वेब ब्राउज़र में यूआरएल अनुरोध.
android:inputType
कीवर्ड. यह बताता है कि इनपुट का यह तरीका किस तरह का है. जैसे, सॉफ़्ट कीबोर्ड. ज़्यादातर खोजों के लिए, जिनमें फ़्री फ़ॉर्म टेक्स्ट की उम्मीद होती है उनके लिए आपको इस एट्रिब्यूट की ज़रूरत नहीं होती. इनकी सूची के लिए inputType पर जाएं इस एट्रिब्यूट के लिए सही वैल्यू.
android:imeOptions
कीवर्ड. इनपुट के तरीके के लिए अन्य विकल्प उपलब्ध कराता है. ज़्यादातर खोजों के लिए, में कौनसा फ़्री-फ़ॉर्म टेक्स्ट होना चाहिए, आपको इस एट्रिब्यूट की ज़रूरत नहीं है. डिफ़ॉल्ट IME है actionSearch, जो "search" देता है बटन पर क्लिक करें, सॉफ़्ट कीबोर्ड. imeOptions देखें देखें.

खोज से जुड़े सुझाव के एट्रिब्यूट

यदि आप खोज सुझाव सृजित करने के लिए किसी सामग्री उपलब्ध कराने वाले को परिभाषित करते है, तो आपको अतिरिक्त एट्रिब्यूट, जो कॉन्टेंट देने वाले से बातचीत को कॉन्फ़िगर करते हैं. खोज की जानकारी दिखाते समय सुझावों के लिए, आपको इनमें से कुछ <searchable> एट्रिब्यूट की ज़रूरत होगी:


android:searchSuggestAuthority
स्ट्रिंग. (खोज से जुड़े सुझाव देने के लिए ज़रूरी है.) यह मान android:authorities में दी गई, अनुमति से जुड़ी स्ट्रिंग एट्रिब्यूट की वैल्यू सबमिट करें.<provider>
android:searchSuggestPath
स्ट्रिंग. इस पाथ का इस्तेमाल सुझावों के हिस्से के तौर पर किया गया है प्रीफ़िक्स और के बाद क्वेरी Uri प्राधिकरण और मानक सुझाव पथ से पहले. इसकी ज़रूरत सिर्फ़ तब होती है, जब आपके पास एक कॉन्टेंट देने वाला अलग-अलग तरह के सुझाव जारी करता है—जैसे कि अलग-अलग डेटा टाइप को एक्सपोर्ट करता है—और जब आपको सुझाव की क्वेरी मिलती हैं, तो उनके बीच अंतर करने के लिए आपको उन्हें.
android:searchSuggestSelection
स्ट्रिंग. यह मान आपके क्वेरी फ़ंक्शन का इस्तेमाल selection पैरामीटर के रूप में करता है. आम तौर पर, यह एक WHERE क्लॉज़ है आपके डेटाबेस के लिए प्लेसहोल्डर के रूप में एक प्रश्न चिह्न होना चाहिए और उपयोगकर्ता की डाली गई असल क्वेरी स्ट्रिंग—उदाहरण के लिए, "query=?". हालांकि, आप इसका उपयोग करके क्वेरी टेक्स्ट की डिलीवरी को ट्रिगर करने के लिए किसी गैर-शून्य मान का उपयोग भी कर सकते हैं selectionArgs पैरामीटर इस्तेमाल कर सकते हैं और फिर selection पैरामीटर को अनदेखा कर सकते हैं).
android:searchSuggestIntentAction
स्ट्रिंग. जब कोई उपयोगकर्ता इस्तेमाल करता है, तो डिफ़ॉल्ट इंटेंट कार्रवाई का इस्तेमाल किया जाता है किसी कस्टम खोज सुझाव पर टैप करता है—जैसे कि "android.intent.action.VIEW". अगर इस मान को SUGGEST_COLUMN_INTENT_ACTION अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है कॉलम में, मान को उपयोगकर्ता के टैप करने पर Intent क्लिक करें.
android:searchSuggestIntentData
स्ट्रिंग. जब कोई उपयोगकर्ता, डिफ़ॉल्ट इंटेंट डेटा का इस्तेमाल करता है किसी कस्टम खोज सुझाव पर टैप करता है. अगर चुने गए सुझाव से नहीं बदला जाता है—तो SUGGEST_COLUMN_INTENT_DATA अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है कॉलम—इस वैल्यू को उपयोगकर्ता के टैप करने पर Intent क्लिक करें.
android:searchSuggestThreshold
पूरी संख्या. वर्णों की कम से कम संख्या सुझाव लुक-अप ट्रिगर करो. इससे सिर्फ़ यह पक्का होता है कि सिस्टम आपकी के लिए तय थ्रेशोल्ड से कम के लिए भी कॉन्टेंट उपलब्ध कराता है. डिफ़ॉल्ट वैल्यू 0 है.

खोज से जुड़े सुझावों के लिए ऊपर दिए गए एट्रिब्यूट के बारे में ज़्यादा जानकारी के लिए, दस्तावेज़ देखें पसंद के मुताबिक खोज से जुड़े सुझाव जोड़ने के लिए और पसंद के मुताबिक सुझाव जोड़ना.

शीघ्र खोज बॉक्स विशेषताएं

त्वरित खोज बॉक्स में अपने कस्टम खोज सुझावों को उपलब्ध कराने के लिए, आपको खोज बॉक्स में से कुछ की आवश्यकता होती है. ये <searchable> एट्रिब्यूट:


android:includeInGlobalSearch
बूलियन. (इसमें खोज से जुड़े सुझाव देने के लिए ज़रूरी है शीघ्र खोज बॉक्स.) अगर आपको अपने सुझाव इस तरह दिखाने हैं, तो "true" पर सेट करें विश्व भर में सुलभ क्विक सर्च बॉक्स में शामिल है. उपयोगकर्ता को ज़रूरी शर्तें पूरी करनी होंगी अभी भी सिस्टम खोज सेटिंग में पहले अपनी ऐप्स को खोजे जाने योग्य आइटम के रूप में सक्षम करें आपके सुझाव शीघ्र खोज बॉक्स में दिखाई देते हैं.
android:searchSettingsDescription
स्ट्रिंग रिसॉर्स. यह खोज से जुड़े उन सुझावों का छोटा ब्यौरा देता है जो आप शीघ्र खोज बॉक्स को उपलब्ध कराते हैं, जो आपके का इस्तेमाल करें. ब्यौरे में, खोजे जाने लायक कॉन्टेंट के बारे में कम शब्दों में जानकारी दी जानी चाहिए. इसके लिए उदाहरण के लिए, "कलाकार, एल्बम, और ट्रैक" संगीत ऐप्लिकेशन या "सेव किए गए नोट" के लिए के लिए नोटपैड ऐप्लिकेशन.
android:queryAfterZeroResults
बूलियन. अगर आपको कॉन्टेंट देने वाले को ये बनाना है, तो "true" पर सेट करें का इस्तेमाल उन क्वेरी के सुपरसेट के लिए किया गया जिनसे पहले कोई नतीजा नहीं मिला था. उदाहरण के लिए, अगर आपका कॉन्टेंट देने वाला "bo" के लिए कोई नतीजा नहीं दिखाता है, तो यह "bob" के लिए क्वेरी होना चाहिए. अगर आपने "false" पर सेट है, सुपरसेट को एक सेशन के लिए अनदेखा किया जाता है—"बॉब" किसी रीक्वेरी को शुरू नहीं करता है. यह केवल खोज संवाद की अवधि या गतिविधि को ट्रैक करें. खोज के लिए डायलॉग बॉक्स या गतिविधि को फिर से खोलने पर, "बो" आपके कॉन्टेंट देने वाले से फिर से क्वेरी करता है. डिफ़ॉल्ट मान असत्य है.

वॉइस सर्च की विशेषताएं

वॉइस सर्च की सुविधा चालू करने के लिए, आपको इनमें से कुछ की ज़रूरत होगी ये <searchable> एट्रिब्यूट:


android:voiceSearchMode
कीवर्ड. (वॉइस सर्च की सुविधाएं देने के लिए ज़रूरी है.) वॉइस सर्च के लिए किसी खास मोड के साथ, वॉइस सर्च की सुविधा को चालू करता है. हो सकता है डिवाइस पर वॉइस सर्च की सुविधा न हो. इस स्थिति में ये फ़्लैग कोई असर नहीं पड़ता. मोड के ये मान स्वीकार किए जाते हैं:
वैल्यूब्यौरा
"showVoiceSearchButton" अगर डिवाइस पर वॉइस सर्च की सुविधा उपलब्ध है, तो 'वॉइस सर्च' बटन दिखाएं. अगर यह नीति सेट है, तो "launchWebSearch" या "launchRecognizer" को भी सेट करना ज़रूरी है, इन्हें पाइप (|) वर्ण से अलग करें.
"launchWebSearch" बोलकर खोजें बटन उपयोगकर्ता को सीधे ले जाता है बिल्ट-इन वॉइस वेब खोज गतिविधि के लिए इस्तेमाल किया जा सकता है. ज़्यादातर ऐप्लिकेशन इस फ़्लैग का इस्तेमाल नहीं करते, क्योंकि यह उपयोगकर्ता को उस गतिविधि से दूर ले जाता है जिसमें खोज शुरू की गई थी.
"launchRecognizer" बोलकर खोजें बटन उपयोगकर्ता को सीधे बिल्ट-इन वॉइस रिकॉर्डिंग गतिविधि पर ले जाता है. यह गतिविधि उपयोगकर्ता को बोलने का प्रॉम्प्ट देता है, बोले गए टेक्स्ट को ट्रांसक्राइब करता है, और दिए गए नतीजे को फ़ॉरवर्ड करता है खोज करने योग्य गतिविधि के लिए क्वेरी टेक्स्ट, ठीक वैसे ही जैसे उपयोगकर्ता ने इसे खोजने के लिए यूज़र इंटरफ़ेस (यूआई) और 'खोजें' बटन पर टैप किया गया.
android:voiceLanguageModel
कीवर्ड. वह लैंग्वेज मॉडल जो आवाज़ की पहचान करने वाले सिस्टम को इसका इस्तेमाल करना चाहिए. ये वैल्यू स्वीकार की जाती हैं:
वैल्यूब्यौरा
"free_form" क्वेरी लिखवाने के लिए, फ़्री फ़ॉर्म बोली पहचान का इस्तेमाल करें. यह मुख्य तौर पर इसे अंग्रेज़ी के लिए ऑप्टिमाइज़ किया गया है. यह डिफ़ॉल्ट विकल्प है.
"web_search" छोटे, खोज-जैसे वाक्यांशों के लिए वेब-खोज-शब्द पहचान का इस्तेमाल करें. यह है "free_form" से ज़्यादा भाषाओं में उपलब्ध है.

यहां जाएं: ज़्यादा के लिए EXTRA_LANGUAGE_MODEL जानकारी.

android:voicePromptText
स्ट्रिंग रिसॉर्स. बोलकर निर्देश देने वाले डायलॉग बॉक्स में दिखाने के लिए एक अतिरिक्त मैसेज.
android:voiceLanguage
स्ट्रिंग. बोली जाने वाली अनुमानित भाषा, जिसे स्ट्रिंग मान के रूप में दिखाया जाता है: Locale में कॉन्स्टेंट डालें, जैसे कि जर्मन के लिए "de" या फ़्रेंच के लिए "fr". इसकी ज़रूरत सिर्फ़ तब होती है, जब यह अलग हो Locale.getDefault() की मौजूदा वैल्यू से.
android:voiceMaxResults
पूरी संख्या. दिए जाने वाले नतीजों की ज़्यादा से ज़्यादा संख्या सेट करता है, जिसमें "सबसे अच्छा" परिणाम, जो हमेशा इस रूप में दिया जाता है ACTION_SEARCH अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इंटेंट की प्राथमिक क्वेरी का इस्तेमाल करें. एक या उससे ज़्यादा होना चाहिए. इस्तेमाल की जाने वाली चीज़ें EXTRA_RESULTS अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इंटेंट से नतीजे पाने के लिए. अगर यह पैरामीटर उपलब्ध नहीं कराया गया है, तो आइडेंटिफ़ायर यह चुन लेता है कि कितने नतीजे देने हैं.
<actionkey>
किसी खोज कार्रवाई के लिए डिवाइस कुंजी और व्यवहार के बारे में बताता है. खोज कार्रवाई एक खास डिवाइस पर किसी बटन पर टैप करने पर व्यवहार, जो वर्तमान क्वेरी या फ़ोकस किए गए सुझाव. उदाहरण के लिए, संपर्क ऐप्लिकेशन, फ़ोन चालू करने के लिए खोज कार्रवाई उपलब्ध कराता है 'कॉल करें' बटन पर टैप करने पर, फ़ोकस किए गए मौजूदा संपर्क सुझाव को कॉल किया जा सकता है.

हर डिवाइस पर सभी ऐक्शन बटन उपलब्ध नहीं होते. साथ ही, इसमें सभी बटन को बदला नहीं जा सकता तरीका है. उदाहरण के लिए, "घर" कुंजी को बदला नहीं जा सकता और हमेशा होम पर वापस आना चाहिए स्क्रीन. साथ ही, पक्का करें कि आपने किसी ऐसी कुंजी के लिए ऐक्शन बटन तय नहीं किया है जो खोज क्वेरी लिखने के लिए ज़रूरी है क्वेरी. इससे, कॉल बटन और मेन्यू में उपलब्ध और सही ऐक्शन बटन सीमित हो जाते हैं बटन.

कुंजी और कम से कम एक कुंजी तय करने के लिए, आपको android:keycode तय करना होगा अन्य तीन एट्रिब्यूट का इस्तेमाल करें.

एट्रिब्यूट:

android:keycode
स्ट्रिंग. (ज़रूरी है.) कोड से मिला कुंजी कोड KeyEvent जो दिखाता है वह ऐक्शन बटन जिसका आपको जवाब देना है—उदाहरण के लिए, "KEYCODE_CALL". यह को ACTION_SEARCH अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इंटेंट. कुंजी कोड की जांच करने के लिए, इसका इस्तेमाल करें getIntExtra(SearchManager.ACTION_KEY). खोज कार्रवाई के लिए सभी कुंजियों का इस्तेमाल नहीं किया जा सकता, क्योंकि उनमें से कई कुंजियों का इस्तेमाल टाइप करने के लिए किया जाता है, या सिस्टम फ़ंक्शन का इस्तेमाल किया जा सकता है.
android:queryActionMsg
स्ट्रिंग. अगर कार्रवाई कुंजी दबाई जाती है और उपयोगकर्ता क्वेरी टेक्स्ट डाल रहा है. इसे ACTION_SEARCH अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस इंटेंट के आधार पर, सिस्टम आपकी खोज योग्य गतिविधि तक पहुंचाता है. स्ट्रिंग की जांच करने के लिए, getStringExtra(SearchManager.ACTION_MSG).
android:suggestActionMsg
स्ट्रिंग. यदि कार्रवाई कुंजी दबाई जाती है तो एक कार्रवाई संदेश सुझाव पर फ़ोकस होता है. इसे उस इंटेंट में जोड़ा जाता है जिसे सिस्टम आपके पास खोज करने की गतिविधि—सुझाव के लिए तय की गई कार्रवाई का इस्तेमाल करके. समस्या की जांच करने के लिए स्ट्रिंग, इसका इस्तेमाल करें getStringExtra(SearchManager.ACTION_MSG). इसका इस्तेमाल सिर्फ़ तब किया जाना चाहिए, जब आपके सभी सुझाव इस ऐक्शन बटन के साथ काम करते हों. अगर सभी नहीं सुझाव एक ही कार्रवाई कुंजी को हैंडल कर सकते हैं, तो आपको इसके बजाय इनका इस्तेमाल करना होगा: android:suggestActionMsgColumn एट्रिब्यूट की वैल्यू सबमिट करें.
android:suggestActionMsgColumn
स्ट्रिंग. आपके कॉन्टेंट देने वाले में उस कॉलम का नाम जो इस ऐक्शन बटन के लिए ऐक्शन मैसेज. यह मैसेज तब भेजा जाता है, जब उपयोगकर्ता ऐक्शन बटन दबाता है जब कोई सुझाव फ़ोकस में हो. इस एट्रिब्यूट की मदद से, किसी सुझाव के आधार पर सुझाव के आधार पर, क्योंकि सभी के लिए ऐक्शन मैसेज तय करने के लिए android:suggestActionMsg एट्रिब्यूट सुझाव देते हैं, तो आपके कॉन्टेंट देने वाले की हर एंट्री अपना ऐक्शन मैसेज देती है.

सबसे पहले, आपको अपने कॉन्टेंट देने वाले में हर सुझाव के लिए एक कॉलम तय करना होगा एक कार्रवाई मैसेज लिखें. इसके बाद, इस एट्रिब्यूट में उस कॉलम का नाम डालें. सिस्टम आपकी कार्रवाई चुनने के लिए, यहां दी गई स्ट्रिंग का इस्तेमाल करके, आपके सुझाव कर्सर को देखता है मैसेज कॉलम में दिखाता है और फिर कर्सर से ऐक्शन मैसेज स्ट्रिंग को चुनता है. वह स्ट्रिंग है इस इंटेंट में जोड़ा गया है कि सिस्टम आपकी कार्रवाई का इस्तेमाल करके, आपकी खोजने लायक गतिविधि तक पहुंचाता है सुझावों के लिए परिभाषित करें. स्ट्रिंग की जांच करने के लिए, getStringExtra(SearchManager.ACTION_MSG). अगर चुने गए सुझाव का डेटा मौजूद नहीं है, तो ऐक्शन बटन को अनदेखा कर दिया जाता है.

उदाहरण:
एक्सएमएल फ़ाइल res/xml/searchable.xml पर सेव की गई:
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/search_label"
    android:hint="@string/search_hint"
    android:searchSuggestAuthority="dictionary"
    android:searchSuggestIntentAction="android.intent.action.VIEW"
    android:includeInGlobalSearch="true"
    android:searchSettingsDescription="@string/settings_description" >
</searchable>