diff --git a/algo/index.js b/algo/index.js index f8ef520..d49d0ea 100644 --- a/algo/index.js +++ b/algo/index.js @@ -1,6 +1,6 @@ const hashTagParser = require('./lib/search') const p = async () => { - let y = await hashTagParser('3-gaza') + let y = await hashTagParser('freegazaorg') const { words, texts } = y if (words.length > 0) console.log(words.join()) texts.forEach(post => { diff --git a/algo/lib/search.js b/algo/lib/search.js index 3e2b6c3..a4fc71e 100644 --- a/algo/lib/search.js +++ b/algo/lib/search.js @@ -1,5 +1,4 @@ let Twitter = require('twitter') -let fs = require('fs') const getTwitterClient = () => { const creds = { consumer_key_1: 'xPgfl66A3zYYuR8X9DgbcLaez', @@ -54,7 +53,6 @@ const arrayConcatIsTheString = (res, str) => { } const splitByAns = res => { - let result = [] let dict = new Set() res = res.filter(e => e.length > 0) res.forEach(phrase => { @@ -73,7 +71,7 @@ const calculateWordsSupport = texts => { let wordsCounts = {} texts.forEach(element => { element = element.split(' ') - let arr = element.reduce((ac, cur) => { + element.reduce((ac, cur) => { cur = cur.replace(/[^0-9a-z]/gi, '') if (ac[cur]) ac[cur] += 1 else ac[cur] = 1 @@ -101,7 +99,7 @@ const findHashTagOrEquivelentInKeys = (cleanQuery, keys) => { keys = keys.map(e => cleanText(e)) keys.forEach(e => { let cleanTerm = e.toLowerCase() - if (cleanTerm == cleanQuery || cleanTerm.replace('#', '') == cleanQuery) { + if (cleanTerm == cleanQuery) { candidates.push(e) } }) @@ -114,6 +112,7 @@ const splitHashes = hashTags => { } const countWords = (texts, queryTerm) => { + const wordsCounts = calculateWordsSupport(texts) let keys = Object.keys(wordsCounts) @@ -150,9 +149,22 @@ const changeNumbersToWords = query => { }) return q } + +const removeCommonPostfix =query =>{ + const commonPostfix = ["org"] + commonPostfix.forEach(e=>{ + if(query.endsWith(e)){ + query = query.slice(0,e.length*-1) + } + }) + return query +} + const handleQuery = query => { query = removeHashTagSeparators(query) query = changeNumbersToWords(query) + query = removeCommonPostfix(query) + return query } module.exports = query => { diff --git a/algo/test/test.js b/algo/test/test.js index ac0d538..fbfe52d 100644 --- a/algo/test/test.js +++ b/algo/test/test.js @@ -5,30 +5,31 @@ const expect = chai.expect const hashTagParser = require('../lib/search') -const p = async quary => { +const excute = async quary => { let y = await hashTagParser(quary) return y.words } - +const testCases = [ + '#freegaza', + '#FREEGAZA', + '#freegazaorg', + '#FreeGaza', + '#3Gaza', + '#free_gaza', + '#FREE_GAZA', + '#freeGAZA', + '#FreeGAZA', + '#freeGaza' +] describe('Hash Tag Parser.', () => { describe("Unit Test's", () => { - it('#freegaza => [free , gaza]', async () => { - const x = await p('#freegaza') - expect(x).to.be.equalTo(['free', 'gaza']) + testCases.forEach(element => { + it(`${element} => [free , gaza]`, async () => { + const result = await excute(element) + expect(result).to.be.equalTo(['free', 'gaza']) + }) }) }) }) - - -// hashtagsParser("#freetibet") // = > ["Free", "Tibet"] -// hashtagsParser("#FREETIBET") // = > ["Free", "Tibet"] -// hashtagsParser("#freetibetorg") // = > ["Free", "Tibet"] -// hashtagsParser("#FreeTibet") // = > ["Free", "Tibet"] -// hashtagsParser("#3Tibet") // = > ["Free", "Tibet"] -// hashtagsParser("#free_tibet") // = > ["Free", "Tibet"] -// hashtagsParser("#FREE_TIBET") // => ["Free", "Tibet"] -// hashtagsParser("#freeTIBET") // => ["Free", "Tibet"] -// hashtagsParser("#FreeTIBET") // => ["Free", "Tibet"] -// hashtagsParser("#freeTibet") // => ["Free", "Tibet"] \ No newline at end of file