In a website I am working on, there is an advanced search form with several fields, some of them dynamic that show up / hide depending on what is being selected on the search form.

Data expected to be big in the database and records are spread over several tables in a very normalized fashion.

Is there a recommendation on using a 3rd part search engine, sql server full text search, lucene.net, etc ... other than using SELECT / JOIN queries?

Thank you
['https://Stackoverflow.com/questions/9699529', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/248665/']
The purpose of `final` but non-`static` variables is to have an object-wide constant. It should be initialized in the constructor:

```
class Passenger {
    final int b;

    Passenger(int b) {
        this.b = b;
    }
}

```

If you are always assigning a constant literal value (`0`) to the `final` variable, it doesn't make much sense. Using `static` is preferred so that you are only having a single copy of `b`:

```
static final int b = 0;

```

BTW I don't think having default access modifier was your intention.
A `final` primitive is the same as a `static final` primitive (except more efficient)

A `final` reference to an immutable object the same as a `static final` reference of the same.

A `final` reference to a mutable object is NOT the same as a `static final` reference of the same.

```
final int i = 0;
// same as
static final int = 0;

final String hi = "Hello";
// same as
static final String hi = "Hello";

final List<String> list = new ArrayList<String>();
// is NOT the same as
static final List<String> list = new ArrayList<String>();

```

The only time the last example is the same is when you have a singleton. It is fairly common for singletons to be written with a confusion of static and non static fields and methods as the difference is not obvious. :|