समानार्थी शब्द (एक जैसे मतलब वाले) शब्द तय करें

किसी संगठन के पास, किसी कॉन्सेप्ट या चीज़ को बताने के लिए यूनीक शब्दावली या कई तरीके हो सकते हैं. आपको समानार्थी शब्द तय करने चाहिए, ताकि शब्दों के मतलब एक जैसे हों. इससे लोगों को खोज करते समय आइटम ढूंढने में मदद मिलती है.

समानार्थी शब्दों को इंडेक्स करने के लिए, _dictionaryEntry जाने-माने स्कीमा का इस्तेमाल किया जाता है.

_dictionaryEntry टाइप के आइटम में ये प्रॉपर्टी हो सकती हैं:

प्रॉपर्टी टाइप ब्यौरा ज़रूरी है?
_term string जिस शब्द की परिभाषा देनी है. सुझाई गई वैल्यू में, हाइफ़न वाले शब्द या विराम चिह्न के बिना वाक्य शामिल होते हैं. ज़रूरी है
_synonym string (repeated) ऐसे वैकल्पिक शब्द जिन्हें _term में तय की गई स्ट्रिंग से मेल खाने वाली क्वेरी में शामिल किया जाना है. ज़रूरी है
_onlyApplicableForAttachedSearchApplications boolean इसकी मदद से, डेटा सोर्स और खोज ऐप्लिकेशन के हिसाब से समानार्थी शब्दों को ग्रुप किया जा सकता है. ज़्यादा जानकारी के लिए, डेटा सोर्स के हिसाब से मिलते-जुलते शब्द तय करना लेख पढ़ें. वैकल्पिक

जब कोई उपयोगकर्ता क्वेरी में _term प्रॉपर्टी की वैल्यू शामिल करता है, तो इफ़ेक्टिव क्वेरी "term OR synonyms" बन जाती है. उदाहरण के लिए, अगर "scifi" शब्द को "science fiction" के समान अर्थ वाले शब्द के तौर पर तय किया गया है, तो "scifi" शब्द वाली क्वेरी, "scifi" या "science fiction." वाले आइटम से मेल खाती है

समानार्थी शब्दों को दोनों दिशाओं में लागू नहीं किया जाता. अगर क्वेरी "science fiction," के लिए है, तो Cloud Search क्वेरी पर कोई समानार्थी शब्द लागू नहीं करता है. क्वेरी सिर्फ़ उन आइटम से मैच करती है जिनमें "science fiction." शामिल हैं. "science fiction." शामिल वाले आइटम हटा दिए जाते हैं."scifi"

दोनों शब्दों को एक-दूसरे की जगह इस्तेमाल करने के लिए, हर शब्द को अलग-अलग तय करें:

शब्द समानार्थी शब्द
scifi science fiction
science fiction scifi

क्वेरी प्रोसेस करने के दौरान, हाइफ़न और अन्य विराम चिह्न हटा दिए जाते हैं. इसके बाद, समानार्थी शब्द लागू किए जाते हैं. उपयोगकर्ता की क्वेरी "sci-fi" से मेल खाती है _term "sci fi." उपयोगकर्ता जिन शब्दों में हाइफ़न का इस्तेमाल कर सकते हैं उनके लिए समानार्थी शब्द बनाने से पहले, _term को सामान्य करें, ताकि हाइफ़न की जगह स्पेस का इस्तेमाल किया जा सके.

उदाहरण के तौर पर, यहां दी गई परिभाषाएं, उपयोगकर्ता की क्वेरी में "sci-fi," "sci fi," "scifi," और "science fiction" को एक-दूसरे की जगह इस्तेमाल करने की अनुमति देती हैं:

शब्द समानार्थी शब्द
scifi science fiction, sci fi
sci fi science fiction, scifi
science fiction scifi, sci fi

डिफ़ॉल्ट रूप से, किसी भी डेटा सोर्स में मौजूद समानार्थी शब्द, पूरे डोमेन पर लागू होते हैं. खास तौर पर, समानार्थी शब्दों को सभी खोजों के लिए, खोज से जुड़ी सभी ऐप्लिकेशन पर लागू किया जाता है. इससे कोई फ़र्क़ नहीं पड़ता कि डेटा सोर्स क्या है. अगर आपको डेटा सोर्स के हिसाब से मिलते-जुलते शब्द चाहिए, तो डेटा सोर्स के हिसाब से मिलते-जुलते शब्द तय करना लेख पढ़ें.

Cloud Search SDK टूल का इस्तेमाल करके, ग्लोबल सिनोनिम तय करना

Content Connector SDK का इस्तेमाल करके, शब्दों और उनके पर्यायवाची शब्दों को तय किया जा सकता है. कनेक्टर बनाने के निर्देशों के लिए, कॉन्टेंट कनेक्टर बनाना लेख पढ़ें.

इस स्निपेट में, CSV फ़ाइल के रिकॉर्ड के आधार पर, शब्द और उसके समानार्थी शब्द को दिखाने वाला RepositoryDoc बनाने का तरीका बताया गया है:

DictionaryConnector.java
/**
 * Creates a document for indexing.
 *
 * For this connector sample, the created document is domain public
 *  searchable. The content is a simple text string.
 *
 * @param record The current CSV record to convert
 * @return the fully formed document ready for indexing
 */
private ApiOperation buildDocument(CSVRecord record) {
  // Extract term and synonyms from record
  String term = record.get(0);
  List<String> synonyms = StreamSupport.stream(record.spliterator(), false)
      .skip(1) // Skip term
      .collect(Collectors.toList());

  Multimap<String, Object> structuredData = ArrayListMultimap.create();
  structuredData.put("_term", term);
  structuredData.putAll("_synonym", synonyms);

  if (Configuration.getBoolean("dictionary.attachedToSearchApp", false).get()) {
    structuredData.put("_onlyApplicableForAttachedSearchApplications", true);
  }

  String itemName = String.format("dictionary/%s", term);

  // Using the SDK item builder class to create the item
  Item item =
      IndexingItemBuilder.fromConfiguration(itemName)
          .setItemType(IndexingItemBuilder.ItemType.CONTENT_ITEM)
          .setObjectType("_dictionaryEntry")
          .setValues(structuredData)
          .setAcl(DOMAIN_PUBLIC_ACL)
          .build();

  // Create the fully formed document
  return new RepositoryDoc.Builder()
      .setItem(item)
      .build();
}

समानार्थी शब्द तय करते समय, इन बातों का ध्यान रखें:

  • समानार्थी शब्दों की एंट्री को सार्वजनिक तौर पर उपलब्ध होना चाहिए. ऊपर दिए गए उदाहरण में, एसीएल को DOMAIN_PUBLIC_ACL पर सेट करके ऐसा किया गया है.
  • अपनी कॉन्फ़िगरेशन फ़ाइल के लिए, यहां दी गई प्रॉपर्टी तय न करें. ऐसा इसलिए, क्योंकि ये आपके कोड में मौजूद डोमेन की सार्वजनिक सेटिंग को बदल देती हैं:
    • defaultAcl.mode=FALLBACK
    • defaultAcl.public=true

सर्च ऐप्लिकेशन के लिए, मिलते-जुलते शब्द तय करना

डिफ़ॉल्ट रूप से, समानार्थी शब्दों को सभी खोज ऐप्लिकेशन के सभी डेटा सोर्स पर लागू किया जाता है.

हालांकि, मान लें कि आपके संगठन में इंजीनियरिंग और सेल्स टीम अलग-अलग हैं. साथ ही, आपको हर टीम को खोज के लिए अलग-अलग सुविधाएं देनी हैं. इनमें नौकरी की भूमिका के हिसाब से मिलते-जुलते शब्द भी शामिल हैं. इस मामले में, इंजीनियरिंग से जुड़े डेटा सोर्स और समानार्थी शब्दों के साथ एक खोज ऐप्लिकेशन बनाया जा सकता है. इसके अलावा, बिक्री से जुड़े डेटा सोर्स और समानार्थी शब्दों के साथ दूसरा खोज ऐप्लिकेशन बनाया जा सकता है. इस लक्ष्य को पूरा करने के लिए, _onlyApplicableForAttachedSearchApplications=true का इस्तेमाल करके, किसी खास डेटा सोर्स में हर समानार्थी शब्द को इंडेक्स करें. इस सेटिंग की मदद से, मिलते-जुलते शब्दों को सीमित किया जाता है. ऐसा इसलिए किया जाता है, ताकि उन्हें सिर्फ़ उन खोज ऐप्लिकेशन पर लागू किया जा सके जिनमें कोई खास डेटा सोर्स शामिल हो.

उदाहरण के लिए, पिछले कोड सैंपल में कोड की यह लाइन जोड़ने से यह पक्का होता है कि इंडेक्स किए गए समानार्थी शब्द, डेटा सोर्स के हिसाब से हों:

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);