/ / एक डेटाबेस कॉलम में शब्द गिनें - mysql, sql, mariadb

डेटाबेस कॉलम में शब्दों की गणना करें - mysql, sql, mariadb

मान लीजिए कि मेरे पास एक मेज है shortText:

ID    | SHORT_TEXT
------+---------------------------
001   | The elephants went in two by two
002   | Needles and haystack
003   | Somewhere over the rainbow
...

कैसे क्वेरी करें? shortText कॉलम में प्रत्येक शब्द की घटना को गिनने के लिए SHORT_TEXT (संग्रहीत प्रक्रिया का उपयोग किए बिना) जैसा परिणाम प्राप्त करने के लिए

WORD  | OCCURENCE
------+------------
the   | 2
and   | 1
over  | 1
...

संपादित करें:

एसओ में अब तक कोई सामान्य उत्तर (दिए गए अधिकतम के बिना शब्दों की चर संख्या) उपलब्ध नहीं है।

उत्तर:

उत्तर № 1 के लिए 1

सिद्धांत रूप में, आप स्ट्रिंग को विभाजित करना चाहते हैंअलग-अलग शब्दों में "शॉर्टटेक्स्ट" (रिक्त स्थान द्वारा IE विभाजन स्ट्रिंग), फिर सभी सरणियों को एक विशाल सूची में संयोजित करें और शब्दों को गिनें .. मुझे डर है कि MySQL में यह बहुत अधिक पूछ सकता है, हालांकि, मैं सिद्धांत का वर्णन कर सकता हूं नीचे postgreSQL में:

 select word,count(*) occurrence
from
(select
unnest(string_to_array(lower(short_text)," ")) word
from shortText) words
group by words.word
order by count(*) desc

उत्तर № 2 के लिए 1

मुझे लगता है कि यदि आप स्तंभ पर एक पूर्ण पाठ सूचकांक बनाते हैं, तो आप शब्दों को एक तालिका से प्राप्त कर सकते हैं जो स्ट्रिंग्स के टोकन के समर्थन के लिए बनाई गई है।

यह बहुत अच्छी तरह से समझाता है ...। https://dev.mysql.com/doc/refman/5.6/en/innodb-ft-index-table-table.html

सूचकांक बनाते समय यहाँ एक प्रश्न है ...

SELECT word, doc_count, doc_id, position FROM INNODB_FT_INDEX_TABLE

या

SELECT word,count(*) FROM INNODB_FT_INDEX_TABLE group by word;

आदि.....

ध्यान दें, मैं "यह परीक्षण नहीं किया है, लेकिन मैं Oracle में समान है"