Example #1
0
        public HashSet <int> Process(string input, int numberOfDocs)
        {
            var wordsWithPlusSign  = RegexOperator.AssortTheWords(input, PLUS_REGEX, 2);
            var wordsWithMinusSign = RegexOperator.AssortTheWords(input, MINUS_REGEX, 2);
            var noneSignWords      = RegexOperator.AssortTheWords(input, NONE_SIGN_REGEX, 2);

            var and = new And();
            var or  = new Or();
            var sub = new Subtract();

            var beforeMinus = and.Apply(and.ApplyOnAll(noneSignWords, tokens),
                                        or.ApplyOnAll(wordsWithPlusSign, tokens));

            if (noneSignWords.Count == 0 && wordsWithPlusSign.Count == 0)
            {
                for (int i = 0; i < numberOfDocs; i++)
                {
                    beforeMinus.Add(i);
                }
            }
            return(sub.Apply(beforeMinus, or.ApplyOnAll(wordsWithMinusSign, tokens)));
        }
        public void SimpleApplyOnAllTestForOrOperation()
        {
            initTokens();

            var words = new List <string> {
                "sky", "phone", "bye", "five"
            };
            var expectedValue = new HashSet <int> {
                1, 4, 6, 9, 11, 3, 8, 2, 7
            };

            var operation   = new Or();
            var actualValue = operation.ApplyOnAll(words, tokens);

            Assert.Equal(expectedValue, actualValue);
        }