So two things to note here:
1. I don't know what your problem exactly is - perhaps you're matching stuff from "book.type", "book.author" or whatever else property, not just name.
If you want to limit the search, just limit it to your name property directly:
<tr ng-repeat="item in items | filter:search">
2. Layout - you have a weird thing there with ng-if:
ng-if="$index%2==0"
That would limit you to only show every second row of the array (filtered or full, regardless). Why is that? Are you trying to lay the data out in two columns?
Why not simply use some simple grid?
Like:
<div class="results grid">
<div class="col-1-2" ng-repeat="item in items">
<span>{{
item.name }}, {{ item.type }}</span>
</div>
</div>