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

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

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

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

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

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

समानार्थी शब्द, दोनों दिशाओं में लागू नहीं होते. अगर क्वेरी "science fiction," Cloud Search के लिए है, तो क्वेरी में कोई समानार्थी शब्द लागू नहीं होता. क्वेरी सिर्फ़ उन आइटम से मैच करती है जिनमें "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();
}

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

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

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

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

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

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

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);