Идиома должна использовать поразрядное или - равный оператор для установки битов:
flags |= 0x04;
Для очистки немного идиома должна использовать поразрядно и с отрицанием:
flags &= ~0x04;
Иногда у Вас есть смещение, которое определяет Ваш бит, и затем идиома должна использовать, они объединились со сдвигом влево:
flags |= 1 << offset;
flags &= ~(1 << offset);
StandardAnalyzer, который использует StandardTokenizer, не токенизирует URL-адреса (хотя он распознает электронные письма и обрабатывает их как один токен). Вы видите, что это поведение по умолчанию - разделение на различные знаки препинания. Самым простым решением может быть использование собственного анализатора и предоставление UrlTokenizer, который расширяет / изменяет код в StandardTokenizer для токенизации URL-адресов. Что-то вроде:
public class MyAnalyzer extends Analyzer {
public MyAnalyzer() {
super();
}
public TokenStream tokenStream(String fieldName, Reader reader) {
TokenStream result = new MyUrlTokenizer(reader);
result = new LowerCaseFilter(result);
result = new StopFilter(result);
result = new SynonymFilter(result);
return result;
}
}
Где URLTokenizer разбивается на /, - _ и все, что вы хотите. Nutch также может иметь соответствующий код, но я не знаю, есть ли версия .NET.
Обратите внимание, что если у вас есть отдельное fieldName для URL-адресов, вы можете изменить приведенный выше код, используя StandardTokenizer по умолчанию, иначе используйте UrlTokenizer.
например
public TokenStream tokenStream(String fieldName, Reader reader) {
TokenStream result = null;
if (fieldName.equals("url")) {
result = new MyUrlTokenizer(reader);
} else {
result = new StandardTokenizer(reader);
}
Вам следует самостоятельно проанализировать URL-адрес (я полагаю, что существует как минимум один класс .Net, который может анализировать строку URL-адреса и выделять различные элементы), а затем добавить эти элементы (например, хост, или все, что вам нужно для фильтрации) в качестве ключевых слов; вообще не анализируйте их.